C#數(shù)據(jù)類型(二)

原文:https://blog.csdn.net/yysyangyangyangshan/article/details/7490939
C#的數(shù)據(jù)類型可以分為3類:數(shù)值類型,引用類型,指針類型。指針類型僅在不安全代碼中使用。
值類型包括簡(jiǎn)單類型(如字符型,浮點(diǎn)型和整數(shù)型等),集合類型和結(jié)構(gòu)型。引用類型包括類類型,接口類型,代表類型和數(shù)組類型。

值類型和引用類型的不同之處是值類型的變量值直接包含數(shù)據(jù),而引用類型的變量把它們的引用存儲(chǔ)在對(duì)象中。對(duì)于引用類型的變量,完全有可能讓兩個(gè)不同的變量引用同一個(gè)對(duì)象,這樣一來,對(duì)其中一個(gè)變量的操作就會(huì)影響到被另一個(gè)變量引用的對(duì)象。對(duì)于值類型的變量而言,每一個(gè)變量有它們自己的數(shù)值,因此對(duì)其中一個(gè)變量的操作不可能影響到另外一個(gè)變量。

1 值類型
所有的值類型都隱含地聲明了一個(gè)公共的無參數(shù)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)叫做默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)返回一個(gè)初始為零的值類型的實(shí)例,稱之為默認(rèn)值。
對(duì)于sbyte,byte,short,ushort,int,uint,long,ulong,默認(rèn)值為0。
對(duì)于char,默認(rèn)值是'\x0000'
對(duì)于float,默認(rèn)值是0.0F
對(duì)于double,默認(rèn)值是0.0D
對(duì)于decimal,默認(rèn)值是0.0M
對(duì)于bool,默認(rèn)值是false
對(duì)于一個(gè)枚舉類型,默認(rèn)值是0
對(duì)于一個(gè)結(jié)構(gòu)類型,默認(rèn)值的設(shè)置就是把所有值類型的域都設(shè)置為它們各自的默認(rèn)值,把所有的引用類型的域賦為空
1.1 簡(jiǎn)單類型
C#提供一套預(yù)定義的結(jié)構(gòu)類型叫做簡(jiǎn)單類型。簡(jiǎn)單類型用保留字定義,這些保留字僅僅是在System名字空間里預(yù)定義的結(jié)構(gòu)類型的化名。比如int是保留字,System。Int32是在System名字空間中預(yù)定義類型。一個(gè)簡(jiǎn)單類型和它化名的結(jié)構(gòu)類型是完全一樣的,也就是說寫int和寫System。Int32是一樣的。簡(jiǎn)單類型主要有整型,浮點(diǎn)類型,小數(shù)類型,布爾類型,字符型
1.1.1 整型
C#中支持9種整型:sbyte,byte,short,ushort,int,uint,long,ulong和char。
Sbyte:代表有符號(hào)的8位整數(shù),數(shù)值范圍從-128 ~ 127
Byte:代表無符號(hào)的8位整數(shù),數(shù)值范圍從0~255
Short:代表有符號(hào)的16位整數(shù),范圍從-32768 ~ 32767
ushort:代表有符號(hào)的16位整數(shù),范圍從-32768 ~ 32767
Int:代表有符號(hào)的32位整數(shù),范圍從-2147483648 ~ 2147483648
uint:代表無符號(hào)的32位整數(shù),范圍從0 ~ 4294967295
Long:代表有符號(hào)的64位整數(shù),范圍從-9223372036854775808 ~ 9223372036854775808
Ulong:代表無符號(hào)的64位整數(shù),范圍從0 ~ 18446744073709551615。
char:代表無符號(hào)的16位整數(shù),數(shù)值范圍從0~65535。
Char類型的可能值對(duì)應(yīng)于統(tǒng)一字符編碼標(biāo)準(zhǔn)(Unicode)的字符集。
Char類型與其他整數(shù)類型相比有以下兩點(diǎn)不同之處:
a,沒有其他類型到char類型的隱式轉(zhuǎn)換。即使是對(duì)于sbyte,byte和ushort這樣能完全使用char類型代表其值的類型, sbyte,byte和ushort到char的隱式轉(zhuǎn)換也不存在。
b,char類型的常量必須被寫為字符形式,如果用整數(shù)形式,則必須帶有類型轉(zhuǎn)換前綴。比如(char)10賦值形式有三種:
char chsomechar="A";
char chsomechar="\x0065"; 十六進(jìn)制
char chsomechar="\u0065 ; unicode表示法
字符型中有下列轉(zhuǎn)義符:
1,'用來表示單引號(hào)
2,"用來表示雙引號(hào)
3,\ 用來表示反斜杠
4, \0 表示空字符
5, \a 用來表示感嘆號(hào)
6, \b 用來表示退格
7, \f 用來表示換頁(yè)
8, \n 用來表示換行
9, \r 用來表示回車
10, \t 用來表示水平tab
11, \v 用來表示垂直tab
1.1.2 浮點(diǎn)類型
C#支持兩種浮點(diǎn)類型:float和double。
Float型所能表示的值的范圍大約可以從1.510 -45~3.4 10 38,精確到小數(shù)點(diǎn)后面7位。
Double型所能表示的值的范圍大約可以從5.010 -324~1.7 10 308,精確到小數(shù)點(diǎn)后面15位或16位。
如果二元操作中的其中一個(gè)操作數(shù)為浮點(diǎn)類型,那么另外一個(gè)操作數(shù)是整型或浮點(diǎn)類型,運(yùn)算規(guī)則如下:
a,如果其中一個(gè)操作數(shù)是整型,則操作數(shù)被轉(zhuǎn)換為另一個(gè)操作數(shù)的浮點(diǎn)數(shù)類型;
b,如果操作數(shù)之一為double,則另一操作數(shù)也被轉(zhuǎn)換成double類型,運(yùn)算以double類型的精度和取值范圍進(jìn)行,并且所得結(jié)果也為double類型;
c,否則,運(yùn)算至少將以float類型的取值范圍和精度進(jìn)行,并且所得結(jié)果也為float型。
1.1.3 小數(shù)(decimal)類型
小數(shù)類型非常適用于金融和貨幣運(yùn)算。數(shù)值范圍從1.010 -28~7.9 10 28,精確到小數(shù)點(diǎn)后面28位。如果二元操作中的其中一個(gè)操作數(shù)是小數(shù)類型,那么另外一個(gè)從操作數(shù)是整型或小數(shù)類型。整型在運(yùn)算前被轉(zhuǎn)化為小數(shù)類型數(shù)。如果一個(gè)小數(shù)類型的算術(shù)運(yùn)算產(chǎn)生了一個(gè)對(duì)于小數(shù)類型的格式來說太小的值,操作的結(jié)果將會(huì)變成0。如果一個(gè)小數(shù)類型的算術(shù)運(yùn)算產(chǎn)生了一個(gè)對(duì)于小數(shù)類型的格式來說太大的值,就會(huì)觸發(fā)溢出錯(cuò)誤。小數(shù)類型較浮點(diǎn)類型而言,具有更大的精確度,但是數(shù)值范圍相對(duì)小了很多。將浮點(diǎn)類型的數(shù)向小數(shù)類型的數(shù)轉(zhuǎn)化時(shí)會(huì)產(chǎn)生溢出錯(cuò)誤,將小數(shù)類型的數(shù)向浮點(diǎn)類型的數(shù)轉(zhuǎn)化時(shí)會(huì)造成精確度的損失。因此,兩種類型不存在隱式或顯式轉(zhuǎn)換。布爾型:值為true或false。沒有標(biāo)準(zhǔn)能實(shí)現(xiàn)布爾類型和其他類型的轉(zhuǎn)換。
1.2 枚舉類型
枚舉類型的元素使用的類型只能是long,int,short,byte。默認(rèn)類型是int。默認(rèn)第一個(gè)元素的值是0,每一個(gè)連續(xù)的元素按1遞增。可以給元素直接賦值。如:

2.  {  
3.    January=1,  
4.    February,   
5.    march=31  
6.  };  
7.  可以強(qiáng)制定義其他類型,如:  
8.  enum monthnames : byte  
9.  {  January ,  
10.    February,  
11.    March  
12.  };  

1.3結(jié)構(gòu)類型 結(jié)構(gòu)類型也是一種值類型,使用它的目的是用于創(chuàng)建小型的對(duì)象,用以節(jié)省內(nèi)存。下面的例子表示一個(gè)使用byte類型的4個(gè)字段的IP地址。

1.  using System;  
2.  Struct IP //聲明結(jié)構(gòu)  
3.  {   
4.    public byte b1,b2,b3,b4;  
5.  }  

7.  Class test  
8.  {  
9.      public static void Main()  
10.    {  
11.      IP myIP;  
12.      myIP.b1=192;  
13.      myIP.b2=168;  
14.      myIP.b3=1;  
15.      myIP.b4=101;  
16.      Console.Write("{0}.{1}。", myIP.b1, myIP.b2);  
17.      Console.Write("{0}.{1}", myIP.b3, myIP.b4);  
18.    }  
19.  }  

2 引用類型
引用類型包括類類型,接口類型,代表類型和數(shù)組類型。
2.1 類類型
類 類型定義了一種數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)中包含了數(shù)據(jù)成員(如常量,字段和事件等),函數(shù)成員(如方法,屬性,索引,操作,構(gòu)造函數(shù)和析構(gòu)函數(shù)等)和嵌套 類型。支持繼承。
2.2 對(duì)象類型
對(duì)象類型是其他所有類型最終的基礎(chǔ)類型。在C#中每一種類型都直接或者間接的源于object這個(gè)類類型。
2.3 字符串類型
字符串類型是直接從object中繼承而來的密封類。String類型的值可以寫成字符串文字的形式。
2.4 接口類型
一個(gè)接口聲明一個(gè)只有抽象成員的引用類型,接口僅僅存在方法標(biāo)志,但沒有執(zhí)行代碼。當(dāng)定義一個(gè)類時(shí),如果類從接口派生,可以派生自多重接口;但是如果類從類派生,就只能從一個(gè)類派生。
聲明方法如例:

1.  interface iface  
2.  {  
3.    void showmyface();  
4.  }  

2.5 代表類型
代表引用一種靜態(tài)的方法或者對(duì)象實(shí)例,引用該對(duì)象的實(shí)例方法。與其接近的是c/c++中的指針,但指針只能訪問靜態(tài)的函數(shù),代表既能訪問靜態(tài)的方法,也能訪問實(shí)例的方法。
2.6 數(shù)組
數(shù)組是包含一串變量的數(shù)據(jù)結(jié)構(gòu)。數(shù)組變量也稱做數(shù)組元素,它們具有相同的類型,這種類型也稱做數(shù)組元素類型。數(shù)組的元素類型可以是任何類型,包括數(shù)組類型。數(shù)組用下標(biāo)確定每一個(gè)數(shù)組元素的索引號(hào)。只有一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)組,多于一個(gè)下標(biāo)的數(shù)組稱為
多維數(shù)組。
例:int[] a={0,2,4,6,8}; 等價(jià)于int[] a=new int[] {0,2,4,6,8};
也可以這樣初始化:a[0]=0; a[1]=2; a[2]=4; a[3]=6; a[4]=8;
int[] a; //int型的一維數(shù)組
int[,] a; //int型的二維數(shù)組
int[,,] a; //int型的三維數(shù)組
int[] []a; //int型的數(shù)組的數(shù)組
int[][][]a; //int型的數(shù)組的數(shù)組的數(shù)組
數(shù)組的每個(gè)維數(shù)的長(zhǎng)度不是數(shù)組類型的一部分,維數(shù)的長(zhǎng)度是在數(shù)組創(chuàng)建語句中指定的,而不是在數(shù)組類型中
指定的,例如:
int[,,] a3=new int[10,20,30];
a3是是一個(gè)數(shù)組變量, int[,,] 沒有指定數(shù)組的長(zhǎng)度,數(shù)組創(chuàng)建語句new int[10,20,30]才指定。
下面的例子創(chuàng)建一個(gè)數(shù)組的數(shù)組:
int[][] J=new int[3][];
J[0]=new int[] {1,2,3};
J[1]=new int[] {1,2,3,4,5,6};
J[2]=new int[] {1,2,3,4,5,6,7,8,9};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。