黑馬程式設計師 C 資料型別

2021-06-22 16:59:28 字數 3629 閱讀 5062

------- windows phone 7手機開發、.net培訓、期待與您交流! -------

c#程式設計中,大家會經常使用到不同的資料型別,那麼c#程式語言到底有什麼型別呢?具體如下:

1.1 值型別

各種值型別總是含有相應該型別的乙個值。c#迫使你初始化變數才能使用它們進行計算-變數沒有初始化不會出問題,因為當你企圖使用它們時,編譯器會告訴你。 每當把乙個值賦給乙個值型別時,該值實際上被拷貝了。相比,對於引用型別,僅是引用被拷貝了,而實際的值仍然保留在相同的記憶體位置,但現在有兩個物件指向了它(引用它)。c#的值型別可以歸類如下:

1.1.1 簡單型別

在c#中出現的簡單型別共享一些特性。第一,它們都是.net系統型別的別名。第二,由簡單型別組成的常量表示式僅在編譯時而不是執行時受檢測。最後,簡單型別可以按字面被初始化。以下為c#簡單型別歸類:

1.1.1.1 整型

c#中有9個整型。 sbyte 、byte、 short、 ushort、 int、 uint、 long、 ulong 和 char(單獨一節討論)。它們具有以下特性:

vb和c程式設計師都可能會對int和long資料型別所代表的新範圍感到驚訝。和其它的程式語言相比,在c#中,int不再取決於乙個機器的字(word)的大小,而long被設成64位。

1.1.1.2 布林型

布林資料型別有true和false兩個布林值。可以賦於true或false值給乙個布林變數,或可以賦於乙個表示式,其所求出的值等於兩者之一:

bool

btest = (80 > 90);  

與c和c++相比,在c#中,true值不再為任何非零值。不要為了增加方便而把其它整型轉換成布林型。

1.1.1.3 字元型

字元型為乙個單unicode 字元。乙個unicode字元16位長,它可以用來表示世界上多種語言。可以按以下方法給乙個字元變數賦值:

char

chsomechar = 

'a';  

除此之外,可以通過十六進製制轉義符(字首\x)或unicode表示法給變數賦值(字首\u):

char

chsomechar = 

'\x0065'

;   

char

chsomechar = 

'\u0065'

;

不存在把char轉換成其它資料型別的隱式轉換。這就意味著,在c#中把乙個字元變數當作另外的整數資料型別看待是行不通的——這是c程式設計師必須改變習慣的另乙個方面。但是,可以運用顯式轉換:

char

chsomechar = (

char

)65;   

intnsomeint = (

int)

'a';  

1.1.1.4 浮點型

兩種資料型別被當作浮點型:float和double。它們的差別在於取值範圍和精度:

float: 取值範圍在 1.5x10^-45~ 3.4x10^38之間, 精度為7位數。

double: 取值範圍在 5.0x10^-324 ~ 1.7x10^308之間, 精度為 15~16 位數。

當用兩種浮點型執行運算時,可以產生以下的值:

另乙個運算規則為,當表示式中的乙個值是浮點型時,所有其它的型別都要被轉換成浮點型才能執行運算。

1.1.1.5 小數型(the decimal type)

小數型是一種高精度、128位資料型別,它打算用於金融和貨幣的計算。它所表示的範圍從大約1.0x10^-28 到 7.9x10^28,具有28至29位有效數字。要注意,精度是以位數 (digits)而不是以小數字(decimal places)表示。運算準確到28個小數字的最大值。

正如你所看到的,它的取值範圍比double的還窄,但它更精確。因此,沒有decimal和double之間的隱式轉換——往乙個方向轉換可能會溢位,往另外乙個方向可能會丟失精度。你不得不運用顯式轉換。

當定義乙個變數並賦值給它時,使用 m 字尾以表明它是乙個小數型:

decimal

decmyvalue = 1.0m;  

如果省略了m,在變數被賦值之前,它將被編譯器認作double型。

1.1.2 結構型別

乙個結構型別可以宣告建構函式、常數、字段、方法、屬性、索引、操作符和巢狀型別。儘管列出來的功能看起來象乙個成熟的類,但在c#中,結構和類的區別在於結構是乙個值型別,而類是乙個引用型別。與c++相比,這裡可以用結構關鍵字定義乙個類。

使用結構的主要思想是用於建立小型的物件,如point和fileinfo等等。你可以節省記憶體,因為沒有如類物件所需的那樣有額外的引用產生。例如,當宣告含有成千上萬個物件的陣列時,這會引起極大的差異。

清單4.1 包含乙個命名為ip的簡單結構,它表示乙個使用byte型別的4個字段的ip位址。我不包括方法等,因為這些工作正如使用類一樣,將在下一章有詳細的描述。

清單1.1 定義乙個簡單的結構

using

system;   

struct

ip   

class

test   

..",myip.b1,myip.b2);   

console.write(

".",myip.b3,myip.b4);   

}   

}

1.1.3 列舉型別

當你想宣告乙個由一指定常量集合組成的獨特型別時,列舉型別正是你要尋覓的。最簡單的形式,它看起來可能象這樣:

enum

monthnames ;  

因我慣用預設設定,故列舉元素是int型,且第乙個元素為0值。每乙個連續的元素按1遞增。如果你想給第乙個元素直接賦值,可以如下把它設成1:

enum

monthnames ;  

如果你想賦任意值給每個元素——甚至相同的值——這也沒有問題:

enum

monthnames ;  

最後的選擇是不同於int的資料型別。可以在一條語句中按如此賦值:

enum

monthnames : 

byte

;

你可以使用的型別僅限於long、int、short和byte。

1.2 引用型別

和值型別相比,引用型別不儲存它們所代表的實際資料,但它們儲存實際資料的引用。在c#中提供以下引用型別給你使用:

1.2.1 物件型別

物件型別是所有型別之母——它是其它型別最根本的基類。因為它是所有物件的基類,所以可把任何型別的值賦給它。例如,乙個整型:

object

theobj = 123;  

給所有的c++程式設計師乙個警告:object並不等價於你可能正在尋找的void*。無論如何,忘掉指標總是個好主意。

當乙個值型別被加框(作為乙個物件利用)時,物件型別就被使用了。這一章稍後會討論到加框和消框

1.2.2 類型別

乙個類型別可以包含資料成員、函式成員和巢狀型別。資料成員是常量、欄位和事件。函式成員包括方法、屬性、索引、操作符、建構函式和析構函式。類和結構的功能是非常相似的,但正如前面所述,結構是值型別而類是引用型別。

黑馬程式設計師 C 資料型別

c 資料型別分為值型別和引用型別。值型別分為簡單型別 結構型別和列舉型別 c 各種資料型別之間的關係 整數型別分為短位元組型 sbyte 位元組型 byte 短整型 short 無符號短整型 ushort 整型 int 無符號整型 uint 長整型 long 和無符號長整型 ulong 等 實數型別...

黑馬程式設計師 C 中的資料型別

asp.net android io開發s net培訓 期待與您交流!一,c 資料型別的分類 c 提供的資料型別可以分為兩大類 一類是值型別,一類是引用型別。值型別又進一步劃分為 簡單型別,列舉型別,結構型別和可空型別 引用型別則進一步劃分為 類型別,介面型別,陣列型別 和委託型別 二,值型別和引用...

黑馬程式設計師 基本資料型別

asp.net android io開發s net培訓 期待與您交流!將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料 基本資料型別 引用資料型別 類 byte byte short short int integer long long boolean boolean f...