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

C# 類型體系包含下列3種類型:

3-1值類型-------------簡單值類型:數(shù)值類型、布爾類型择示、字符類型、自定義類型

? ? ? ? ? ? ? ? ?-------------復合值類型:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct結構{數(shù)值類型、布爾類型、自定義類型}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? enum枚舉

3-2引用類型--? ? ? ? ? class類

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?interface接口

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?delegate委托

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?- - -array數(shù)組

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?內置引用類型:(dynamic動態(tài))腾啥、object對象、string字符串

3-3指針類型

C#的數(shù)據(jù)類型可以分為3類:數(shù)值類型,引用類型倘待,指針類型疮跑。指針類型僅在不安全代碼中使用。

值類型包括簡單值類型和復合型類型凸舵。簡單值類型可以再細分為整數(shù)類型祖娘、字符類型、實數(shù)類型和布爾類型啊奄;而復合類型則是簡單類型的復合渐苏,包括結構(struct)類型和枚舉(enum)類型。

值類型包括簡單類型(如字符型菇夸,浮點型和整數(shù)型等)琼富,集合類型和結構型。引用類型包括類類型庄新,接口類型鞠眉,代表類型和數(shù)組類型。

值類型和引用類型的不同之處是值類型的變量值直接包含數(shù)據(jù)择诈,而引用類型的變量把它們的引用存儲在對象中械蹋。對于引用類型的變量,完全有可能讓兩個不同的變量引用同一個對象羞芍,這樣一來哗戈,對其中一個變量的操作就會影響到被另一個變量引用的對象。對于值類型的變量而言荷科,每一個變量有它們自己的數(shù)值唯咬,因此對其中一個變量的操作不可能影響到另外一個變量。

1 值類型

所有的值類型都隱含地聲明了一個公共的無參數(shù)的構造函數(shù)步做,這個構造函數(shù)叫做默認構造函數(shù)副渴。默認構造函數(shù)返回一個初始為零的值類型的實例,稱之為默認值全度。

對于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是一樣的。簡單類型主要有整型景东,浮點類型砂轻,小數(shù)類型,布爾類型斤吐,字符型

1.1.1 整型

C#中支持9種整型:sbyte搔涝,byte,short和措,ushort庄呈,int,uint派阱,long诬留,ulong和char。

Sbyte:代表有符號的8位整數(shù)贫母,數(shù)值范圍從-128 ~ 127

Byte:代表無符號的8位整數(shù)文兑,數(shù)值范圍從0~255

Short:代表有符號的16位整數(shù),范圍從-32768 ~ 32767

ushort:代表有符號的16位整數(shù)腺劣,范圍從-32768 ~ 32767

Int:代表有符號的32位整數(shù)绿贞,范圍從-2147483648 ~ 2147483648

uint:代表無符號的32位整數(shù),范圍從0 ~ 4294967295

Long:代表有符號的64位整數(shù)橘原,范圍從-9223372036854775808 ~ 9223372036854775808

Ulong:代表無符號的64位整數(shù)籍铁,范圍從0 ~ 18446744073709551615涡上。

char:代表無符號的16位整數(shù)歌懒,數(shù)值范圍從0~65535衙耕。

Char類型的可能值對應于統(tǒng)一字符編碼標準(Unicode)的字符集。

Char類型與其他整數(shù)類型相比有以下兩點不同之處:

a失晴,沒有其他類型到char類型的隱式轉換靡狞。即使是對于sbyte耻警,byte和ushort這樣能完全使用char類型代表其值的類型, sbyte甸怕,byte和ushort到char的隱式轉換也不存在甘穿。

b,char類型的常量必須被寫為字符形式梢杭,如果用整數(shù)形式温兼,則必須帶有類型轉換前綴。比如(char)10賦值形式有三種:

char chsomechar="A";

char chsomechar="\x0065"; 十六進制

char chsomechar="\u0065 ; unicode表示法

字符型中有下列轉義符:

1武契,\'用來表示單引號

2募判,\"用來表示雙引號

3,\\ 用來表示反斜杠

4咒唆, \0 表示空字符

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李命,精確到小數(shù)點后面7位登淘。

Double型所能表示的值的范圍大約可以從5.0*10 -324~1.7* 10 308,精確到小數(shù)點后面15位或16位封字。

如果二元操作中的其中一個操作數(shù)為浮點類型黔州,那么另外一個操作數(shù)是整型或浮點類型,運算規(guī)則如下:

a周叮,如果其中一個操作數(shù)是整型辩撑,則操作數(shù)被轉換為另一個操作數(shù)的浮點數(shù)類型;

b,如果操作數(shù)之一為double仿耽,則另一操作數(shù)也被轉換成double類型合冀,運算以double類型的精度和取值范圍進行,并且所得結果也為double類型;

c项贺,否則君躺,運算至少將以float類型的取值范圍和精度進行峭判,并且所得結果也為float型。

1.1.3 小數(shù)(decimal)類型

小數(shù)類型非常適用于金融和貨幣運算棕叫。數(shù)值范圍從1.0*10 -28~7.9* 10 28林螃,精確到小數(shù)點后面28位。如果二元操作中的其中一個操作數(shù)是小數(shù)類型俺泣,那么另外一個從操作數(shù)是整型或小數(shù)類型疗认。整型在運算前被轉化為小數(shù)類型數(shù)。如果一個小數(shù)類型的算術運算產(chǎn)生了一個對于小數(shù)類型的格式來說太小的值伏钠,操作的結果將會變成0横漏。如果一個小數(shù)類型的算術運算產(chǎn)生了一個對于小數(shù)類型的格式來說太大的值,就會觸發(fā)溢出錯誤熟掂。小數(shù)類型較浮點類型而言缎浇,具有更大的精確度,但是數(shù)值范圍相對小了很多赴肚。將浮點類型的數(shù)向小數(shù)類型的數(shù)轉化時會產(chǎn)生溢出錯誤素跺,將小數(shù)類型的數(shù)向浮點類型的數(shù)轉化時會造成精確度的損失。因此誉券,兩種類型不存在隱式或顯式轉換指厌。布爾型:值為true或false。沒有標準能實現(xiàn)布爾類型和其他類型的轉換踊跟。

1.2 枚舉類型

枚舉類型的元素使用的類型只能是long仑乌,int,short琴锭,byte。默認類型是int衙传。默認第一個元素的值是0决帖,每一個連續(xù)的元素按1遞增”痛罚可以給元素直接賦值地回。如:

[csharp] view plain copy print?

enum monthnames

{

January=1,

February俊鱼,

march=31

};

可以強制定義其他類型刻像,如:

enum monthnames : byte

{January ,

February并闲,

March

};

1.3結構類型

結構類型也是一種值類型细睡,使用它的目的是用于創(chuàng)建小型的對象,用以節(jié)省內存帝火。下面的例子表示一個使用byte類型的4個字段的IP地址溜徙。

[csharp] view plain copy print?

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 引用類型

引用類型包括類類型疏日,接口類型偿洁,代表類型和數(shù)組類型。

2.1 類類型

類 類型定義了一種數(shù)據(jù)結構制恍,這個數(shù)據(jù)結構中包含了數(shù)據(jù)成員(如常量父能,字段和事件等),函數(shù)成員(如方法净神,屬性何吝,索引,操作鹃唯,構造函數(shù)和析構函數(shù)等)和嵌套 類型爱榕。支持繼承。

2.2 對象類型

對象類型是其他所有類型最終的基礎類型坡慌。在C#中每一種類型都直接或者間接的源于object這個類類型黔酥。

2.3 字符串類型

字符串類型是直接從object中繼承而來的密封類。String類型的值可以寫成字符串文字的形式洪橘。

2.4 接口類型

一個接口聲明一個只有抽象成員的引用類型跪者,接口僅僅存在方法標志,但沒有執(zhí)行代碼熄求。當定義一個類時渣玲,如果類從接口派生,可以派生自多重接口;但是如果類從類派生弟晚,就只能從一個類派生忘衍。

聲明方法如例:

[html] view plain copy print?

interface iface

{

void showmyface();

}

2.5 代表類型

代表引用一種靜態(tài)的方法或者對象實例,引用該對象的實例方法卿城。與其接近的是c/c++中的指針枚钓,但指針只能訪問靜態(tài)的函數(shù),代表既能訪問靜態(tài)的方法瑟押,也能訪問實例的方法搀捷。

2.6 數(shù)組

數(shù)組是包含一串變量的數(shù)據(jù)結構。數(shù)組變量也稱做數(shù)組元素勉耀,它們具有相同的類型指煎,這種類型也稱做數(shù)組元素類型蹋偏。數(shù)組的元素類型可以是任何類型,包括數(shù)組類型至壤。數(shù)組用下標確定每一個數(shù)組元素的索引號威始。只有一個下標的數(shù)組稱為一維數(shù)組,多于一個下標的數(shù)組稱為

多維數(shù)組像街。

例: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型的一維數(shù)組

int[吗讶,] a; //int型的二維數(shù)組

int[燎猛,,] a; //int型的三維數(shù)組

int[] []a; //int型的數(shù)組的數(shù)組

int[][][]a; //int型的數(shù)組的數(shù)組的數(shù)組

數(shù)組的每個維數(shù)的長度不是數(shù)組類型的一部分照皆,維數(shù)的長度是在數(shù)組創(chuàng)建語句中指定的重绷,而不是在數(shù)組類型中

指定的,例如:

int[膜毁,昭卓,] a3=new int[10,20瘟滨,30];

a3是是一個數(shù)組變量候醒, int[,杂瘸,] 沒有指定數(shù)組的長度火焰,數(shù)組創(chuàng)建語句new int[10,20胧沫,30]才指定。

下面的例子創(chuàng)建一個數(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};

原文地址:http://www.cnblogs.com/villison/archive/2007/07/07/809766.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市店诗,隨后出現(xiàn)的幾起案子裹刮,更是在濱河造成了極大的恐慌,老刑警劉巖庞瘸,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捧弃,死亡現(xiàn)場離奇詭異,居然都是意外死亡擦囊,警方通過查閱死者的電腦和手機违霞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霜第,“玉大人葛家,你說我怎么就攤上這事∶诶啵” “怎么了癞谒?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刃榨。 經(jīng)常有香客問我弹砚,道長,這世上最難降的妖魔是什么枢希? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任桌吃,我火速辦了婚禮,結果婚禮上苞轿,老公的妹妹穿的比我還像新娘茅诱。我一直安慰自己,他們只是感情好搬卒,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布瑟俭。 她就那樣靜靜地躺著,像睡著了一般契邀。 火紅的嫁衣襯著肌膚如雪摆寄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音微饥,去河邊找鬼逗扒。 笑死,一個胖子當著我的面吹牛欠橘,可吹牛的內容都是我干的矩肩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼简软,長吁一口氣:“原來是場噩夢啊……” “哼蛮拔!你這毒婦竟也來了?” 一聲冷哼從身側響起痹升,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤建炫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疼蛾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肛跌,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年察郁,在試婚紗的時候發(fā)現(xiàn)自己被綠了衍慎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡皮钠,死狀恐怖稳捆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情麦轰,我是刑警寧澤乔夯,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站款侵,受9級特大地震影響末荐,放射性物質發(fā)生泄漏。R本人自食惡果不足惜新锈,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一甲脏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妹笆,春花似錦块请、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脊凰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸涌。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工切省, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帕胆。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓朝捆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懒豹。 傳聞我的和親對象是個殘疾皇子芙盘,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容