C#的資料類型可以分為3類:數實值型別,參考型別,指標類型。指標類型僅在不安全的程式碼中使用。
實值型別包括簡單類型(如字元型,浮點型和整數型等),集合類型和結構型。參考型別包括類類型,介面類型,代表類型和數群組類型。
實值型別和參考型別的不同之處是實值型別的變數值直接包含資料,而參考型別的變數把它們的引用儲存在對象中。對於參考型別的變數,完全有可能讓兩個不同的變數引用同一個對象,這樣一來,對其中一個變數的操作就會影響到被另一個變數引用的對象。對於實值型別的變數而言,每一個變數有它們自己的數值,因此對其中一個變數的操作不可能影響到另外一個變數。
1 實值型別
所有的實值型別都隱含地聲明了一個公用的無參數的建構函式,這個建構函式叫做預設建構函式。預設建構函式返回一個初始為零的實值型別的執行個體,稱之為預設值。
對於sbyte,byte,short,ushort,int,uint,long,ulong,預設值為0。
對於char,預設值是'\x0000'
對於float,預設值是0。0F
對於double,預設值是0。0D
對於decimal,預設值是0。0M
對於bool,預設值是false
對於一個枚舉類型,預設值是0
對於一個結構類型,預設值的設定就是把所有實值型別的域都設定為它們各自的預設值,把所有的參考型別的域賦為空白
1.1 簡單類型
C#提供一套預定義的結構類型叫做簡單類型。簡單類型用保留字定義,這些保留字僅僅是在System名字空間裡預定義的結構類型的化名。比如int是保留字,System。Int32是在System名字空間中預定義類型。一個簡單類型和它化名的結構類型是完全一樣的,也就是說寫int和寫System。Int32是一樣的。簡單類型主要有整型,浮點類型,小數類型,布爾類型,字元型
1.1.1 整型
C#中支援9種整型:sbyte,byte,short,ushort,int,uint,long,ulong和char。
Sbyte:代表有符號的8位整數,數值範圍從-128 ~ 127
Byte:代表無符號的8位整數,數值範圍從0~255
Short:代表有符號的16位整數,範圍從-32768 ~ 32767
ushort:代表有符號的16位整數,範圍從-32768 ~ 32767
Int:代表有符號的32位整數,範圍從-2147483648 ~ 2147483648
uint:代表無符號的32位整數,範圍從0 ~ 4294967295
Long:代表有符號的64位整數,範圍從-9223372036854775808 ~ 9223372036854775808
Ulong:代表無符號的64位整數,範圍從0 ~ 18446744073709551615。
char:代表無符號的16位整數,數值範圍從0~65535。
Char類型的可能值對應於統一字元編碼標準(Unicode)的字元集。
Char類型與其他整數類型相比有以下兩點不同之處:
a,沒有其他類型到char類型的隱式轉換。即使是對於sbyte,byte和ushort這樣能完全使用char類型代表其值的類型, sbyte,byte和ushort到char的隱式轉換也不存在。
b,char類型的常量必須被寫為字元形式,如果用整數形式,則必須帶有類型轉換首碼。比如(char)10賦值形式有三種:
char chsomechar="A";
char chsomechar="\x0065"; 十六進位
char chsomechar="\u0065 ; unicode標記法
字元型中有下列轉義符:
1,\'用來表示單引號
2,\"用來表示雙引號
3,\\ 用來表示反斜線
4, \0 表示Null 字元
5, \a 用來表示驚嘆號
6, \b 用來表示退格
7, \f 用來表示換頁
8, \n 用來表示換行
9, \r 用來表示斷行符號
10, \t 用來表示水平tab
11, \v 用來表示垂直tab
1.1.2 浮點類型
C#支援兩種浮點類型:float和double。
Float型所能表示的值的範圍大約可以從1.5*10 -45~3.4* 10 38,精確到小數點後面7位。
Double型所能表示的值的範圍大約可以從5.0*10 -324~1.7* 10 308,精確到小數點後面15位或16位。
如果二元操作中的其中一個運算元為浮點類型,那麼另外一個運算元是整型或浮點類型,運算規則如下:
a,如果其中一個運算元是整型,則運算元被轉換為另一個運算元的浮點數類型;
b,如果運算元之一為double,則另一運算元也被轉換成double類型,運算以double類型的精度和取值範圍進行,並且所得結果也為double類型;
c,否則,運算至少將以float類型的取值範圍和精度進行,並且所得結果也為float型。
1.1.3 小數(decimal)類型
小數類型非常適用於金融和貨幣運算。數值範圍從1.0*10 -28~7.9* 10 28,精確到小數點後面28位。如果二元操作中的其中一個運算元是小數類型,那麼另外一個從運算元是整型或小數類型。整型在運算前被轉化為小數類型數。如果一個小數類型的算術運算產生了一個對於小數類型的格式來說太小的值,操作的結果將會變成0。如果一個小數類型的算術運算產生了一個對於小數類型的格式來說太大的值,就會觸發溢出錯誤。小數類型較浮點類型而言,具有更大的精確度,但是數值範圍相對小了很多。將浮點類型的數向小數類型的數轉化時會產生溢出錯誤,將小數類型的數向浮點類型的數轉化時會造成精確度的損失。因此,兩種類型不存在隱式或顯式轉換。布爾型:值為true或false。沒有標準能實現布爾類型和其他類型的轉換。
1.2 枚舉類型
枚舉類型的元素使用的類型只能是long,int,short,byte。預設類型是int。預設第一個元素的值是0,每一個連續的元素按1遞增。可以給元素直接賦值。如:
enum monthnames {January=1,February, march=31};可以強制定義其他類型,如:enum monthnames : byte{January ,February,March};
1.3結構類型
結構類型也是一種實值型別,使用它的目的是用於建立小型的對象,用以節省記憶體。下面的例子表示一個使用byte類型的4個欄位的IP地址。
using System;Struct IP //聲明結構{ public byte b1,b2,b3,b4;}Class test{ public static void Main() { IP myIP; myIP.b1=192; myIP.b2=168; myIP.b3=1; myIP.b4=101; Console.Write("{0}.{1}。", myIP.b1, myIP.b2); Console.Write("{0}.{1}", myIP.b3, myIP.b4);}}
2 參考型別
參考型別包括類類型,介面類型,代表類型和數群組類型。
2.1 類類型
類 類型定義了一種資料結構,這個資料結構中包含了資料成員(如常量,欄位和事件等),函數成員(如方法,屬性,索引,操作,建構函式和解構函式等)和嵌套 類型。支援繼承。
2.2 物件類型
物件類型是其他所有類型最終的基礎類型。在C#中每一種類型都直接或者間接的源於object這個類類型。
2.3 字串類型
字串類型是直接從object中繼承而來的密封類。String類型的值可以寫成字串文字的形式。
2.4 介面類型
一個介面聲明一個只有抽象成員的參考型別,介面僅僅存在方法標誌,但沒有執行代碼。當定義一個類時,如果類從介面派生,可以派生自多重介面;但是如果類從類派生,就只能從一個類派生。
聲明方法如例:
interface iface{void showmyface();}
2.5 代表類型
代表引用一種靜態方法或者對象執行個體,引用該對象的執行個體方法。與其接近的是c/c++中的指標,但指標只能訪問靜態函數,代表既能訪問靜態方法,也能訪問執行個體的方法。
2.6 數組
數組是包含一串變數的資料結構。陣列變數也稱做數組元素,它們具有相同的類型,這種類型也稱做數組元素類型。數組的元素類型可以是任何類型,包括數群組類型。數組用下標確定每一個數組元素的索引號。只有一個下標的數組稱為一維數組,多於一個下標的數組稱為
多維陣列。
例:int[] a={0,2,4,6,8}; 等價於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型的一維數組
int[,] a; //int型的二維數組
int[,,] a; //int型的三維數組
int[] []a; //int型的數組的數組
int[][][]a; //int型的數組的數組的數組
數組的每個維數的長度不是數群組類型的一部分,維數的長度是在數組建立語句中指定的,而不是在數群組類型中
指定的,例如:
int[,,] a3=new int[10,20,30];
a3是是一個陣列變數, int[,,] 沒有指定數組的長度,數組建立語句new int[10,20,30]才指定。
下面的例子建立一個數組的數組:
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};
以上就是C#資料類型 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!