C#規範解讀之8.2.1預定義類型

來源:互聯網
上載者:User
 

 

C#提供了一些預定義類型,大部分是C、C++程式員熟悉的。預定義的參考型別是object和string。object類型是所有類型的最終基類。string類代表了Unicode字串。string對象的值是不可變的。

預定義的實值型別包括有符號和無符號的整型,浮點型,以及bool、char和decimal。有符號的整型有sbyte,short,int,long;無符號的整型有byte,unshort,uint,ulong;浮點型包括float,double。

bool用來表示布爾值:只能是true或false。bool類型使得書寫自描述的代碼更加容易,並且消除了這種C++代碼中常見的錯誤:在該用"=="的地方卻用了"="。在c#中,代碼:

 

int i = …; 

F(i); 

if (i = 0) // Bug: the test should be (i == 0) 

G(); 

 

會導致編譯錯誤,因為運算式i=0的值是int類型的,但是if語句要求使用bool類型的運算式。

char類型用來表示Unicode編碼序列,char類型的變數表示一個16位元的Unicode編碼序列。

decimal類型在浮點運算導致的舍入錯誤變得不可接受時使用,通常包括在金融計算如稅務計算、貨幣兌換。decimal提供至少28位的有效數字。

下面的這個表格列出了這些預定義類型,以及給出了它們的常量值。

 

類型

說明

例子

object  

所有其他類型的最終基類

object o = null;

string String type; 

 

 

一個string是一個Unicode編碼序列

string s = "hello";

sbyte 

8位元有符號的整型

sbyte val = 12;

short 

16位元有符號整型

 short val = 12;

int  

32位元有符號整型

int val = 12;

long  

64位元有符號整型

long val1 = 12;

long val2 = 34L;

byte

 8位元無符號整型

byte val1 = 12;

ushort 

16位元無符號整型

 ushort val1 = 12;

uint

32位元無符號整型

 uint val1 = 12;

uint val2 = 34U;

ulong  

64位元無符號整型

ulong val1 = 12;

ulong val2 = 34U;

ulong val3 = 56L;

ulong val4 = 78UL;

float 

  

 

 

單精確度浮點型

float val = 1.23F;

double

雙精確度浮點型

double val1 = 1.23;

double val2 = 4.56D;

bool

比爾類型,值只能為true或false

bool val1 = true;

bool val2 = false;

char 

字元類型,表示Unicode編碼序列

 

char val = 'h';

decimal

精確的小數類型,至少28個有效數字

decimal val = 1.23M;

每一個預定義的類型都對應一個縮寫的系統提供類型。比如,關鍵字代表System.Int32結構類型。作為一種編碼風格,一般用關鍵字代替完整的系統類別型名。

預定義類型在某些方面進行了特殊的處理,但和其他的結構類型差不多。運算子多載允許開發人員定義新的、用法跟預定義類型類似結構類型。比如說,一個Digit結構類型可以支援所有預定義類型支援的運算子,並且能夠定義預定義類型到Digit類型的轉化。

預定義類型預設使用了運算子多載。比如,比較子==和!=對於不同的預定義類型來說有不同的意思:

兩個int類型的運算式包含相同的整型值,那麼它們是相等的

兩個object類型的運算式引用相同的對象,或二者都是null,那麼它們是相等的。

兩個string類型的運算式所引用的字串長度相等並且每個位置對應的字元相同,或二者都為null,那麼他們相等。

請看例子:

 

using System;

class Test 

static void Main() { 

string s = "Test"; 

string t = string.Copy(s); 

Console.WriteLine(s == t); 

Console.WriteLine((object)s == (object)t); 

輸出是:

True

False

原因是第一個比較運算的對象是兩個string類型的運算式,而第二個比較運算的對象是兩個object類型的運算式。

(注意:標準庫會給布爾類型產生一個字串表示,如上面的System.Console.WriteLine,輸出是"True"和"False",而標準的C#布爾值的兩個常量寫作true和false)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.