C 資料型別基礎

2021-06-28 11:43:21 字數 4001 閱讀 8180

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);

呼叫的方法

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 12...

C 基礎 資料型別

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

C 基礎 資料型別

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