c 資料型別基礎

2021-04-21 14:23:25 字數 2448 閱讀 3124

1.值型別

值型別包括簡單值型別和複合型型別。簡單值型別可以再細分為整數型別、字元型別、實數型別和布林型別;而復合型別則是簡單型別的復合,包括結構(struct)型別和列舉(enum)型別。

整數型別

資料型別 說明 取值範圍 對應於system程式集中的結構

sbyte  有符號8位整數 -128-127 sbyte

byte 無符號8位整數 0-255 byte

short 有符號16位整數 -32768-32767 int16

ushort 無符號16位整數 0-65535 uint16

int 有符號32位整數 -2147489648-2147483647 int32

uint 無符號32位整數 0-42994967295 uint32

long 有符號64位整數 -263-263 int64

ulong 無符號64位整數 0-264 uint64

字元型別

c#中採用unicode字符集來表示字元型別。

實數型別

資料型別 說明 取值範圍

float 32位單精度實數 1.5*10-45-3.4*1038

double 64位雙精度實數 5.0*10-324-1.7*10308

demcimal 128位十進位制實數 1.0*10-28-7.9*1028

布林(bool)型別

取值只能是ture或者false,bool型別對應於.net類庫中的system.boolean結構。它在計算機中佔4個位元組,即32位儲存空間。

結構型別

把一系列相關的資訊組織成為乙個單一實體的過程,這就是建立乙個結構的過程。

struct person

列舉型別

主要用於表示乙個邏輯相關聯的項和組合。使用關鍵字enum來定義。

enum weekday

2.引用型別

引用型別包括類(class)、介面(inte***ce)、委託(delegate)和陣列(array)。

類(class)

類是一組具有相同資料結構和相同操作的物件集合。建立類的例項必須使用關鍵字new來進行宣告。

(重點)類和結構之間的根本區別在於:結構是值型別,而類是引用型別。對於值型別,每個變數直接包含自身的所有資料,每建立乙個變數,就在記憶體中開闢一塊區域;而對於引用型別,每個變數只儲存對目標儲存資料的引用,每建立乙個變數,就增加乙個指向目標資料的指標。

介面(inte***ce)

應用程式之間要相互呼叫,就必須事先達成乙個協議,被呼叫的一方在協議中對自己所能提供的服務進行描述。在c#中,這個協議就是介面。介面定義中對方法的宣告,既不包括訪問限制修飾符,也不包括方法的執行**。

(注意)如果某個類繼承了乙個介面,那麼它就要實現該介面所定義的服務。也就是實現介面中的方法。

委託委託用語封裝某個方法的呼叫過程。

委託的使用過程分為3步:

1.定義 delegate void hellodelegate();

2.例項化 hellodelegate hd = new hellodelegate(p1.say); //p1.say呼叫的方法

3.呼叫 hd();

陣列陣列主要用於同一資料型別的資料進行批量處理。在c#中,陣列需要初始化之後才能使用。

如:int array1 = new int[3];

int array1 = ;

(注意)對規則多維陣列,呼叫length屬性所得的值為整個陣列的長度;而呼叫其getlength方法,引數為0時得到陣列第1維的長度,為1時得到陣列第2維的長度,以此類推。而對於不規則多維陣列,呼叫length屬性和以0為引數呼叫其getlength方法,得到的都是第一維的長度。

3.型別轉換

數值轉換

數值的轉換有乙個原則,即從低精度型別到高精度型別通常可以進行隱式轉換;而從高精度型別則必須進行顯式轉換。

如:int i = 100;

long j = 1000;

j = i; //隱式轉換,由低精度到高精度的轉換

i = (int)j; //顯式轉換,有高精度到底精度的轉換

具體轉換過程中資訊的丟失就看各資料型別的精度了。(可以參考上面資料型別)

列舉轉換

列舉型別與其他任何型別之間不存在隱式轉換。而和列舉型別相關的顯式轉換包括:

1.從所有整數型別(包括字元型別)和實數型別到列舉型別的顯式轉換;

2.從列舉型別到所有整數型別(包括字元型別)和實數型別的顯式轉換;

3.從列舉型別到列舉型別的顯式轉換。

裝箱和拆箱轉換

主要是值型別與引用型別之間相互轉換。

如:object obj 1= 10;

int i = (int)obj; //拆箱

int j = 100;

object obj2 = j; //裝箱

轉換檢查

如果出現轉換失敗,程式就會丟擲乙個system.invalidcastexception異常

C 資料型別基礎

1.值型別 值型別包括簡單值型別和複合型型別。簡單值型別可以再細分為整數型別 字元型別 實數型別和布林型別 而復合型別則是簡單型別的復合,包括結構 struct 型別和列舉 enum 型別。整數型別 資料型別 說明 取值範圍 對應於 system 程式集中的結構 sbyte 有符號8位整數 128 ...

C 基礎 資料型別

記憶體空間有 棧 和 堆 值型別儲存在棧中,儲存的值就是變數本身包含的值,所以訪問速度比較快。引用型別在棧中儲存的只是乙個引用位址,其物件的真實資料則儲存在託管的堆上。訪問效率較慢。棧中存放物件引用,堆中存放物件資料。值型別 using system using system.collections...

C 基礎 資料型別

c 規定在建立乙個變數或者產量時,必須要指定相應的資料型別,否則無法給變數分配記憶體空間 資料型別的存在意義 給變數分配合適的記憶體空間 作用 整型變數表示的是整數型別的資料 在記憶體中的儲存方式如下圖所示 c 中能夠表示整型的型別有以下幾種方式,區別在於所佔記憶體空間不同 資料型別 占用空間 取值...