C 資料型別

2021-09-25 04:28:31 字數 2197 閱讀 5959

值型別

值型別變數可以直接分配給乙個值.它們是從類system.valuetype中派生的.

值型別直接儲存其值

值型別總是分配在它宣告的地方:作為欄位時,跟隨其所屬的變數(例項)儲存:作為區域性變數時,儲存在棧上.棧的記憶體是自動釋放的.

值型別在記憶體管理方法具有更好的效率,並且不支援多型,適合用做儲存資料的載體

c#的值型別包括:結構體(資料型別,bool型,使用者定義的結構體),列舉,可空型別 型別

描述範圍

預設值bool

布林值true或false

false

char

16位unicode字元

u+0000到u+fff

『』byte

8 位無符號整數

0 到 255

0sbyte

8 位有符號整數

-128 到 127

0short

16 位有符號整數

-32,768 到 32,767

0ushort

16 位無符號整數

0 到 65,535

0int

32 位有符號整數

-2,147,483,648 到 2,147,483,647

0uint

32 位無符號整數

0 到 4,294,967,295

0long

64 位有符號整數

-923,372,036,854,775,808 到 9,23,372,036,854,775,807

0ulong

64 位無符號整數

0 到 18,446,744,073,709,551,615

0float

32 位單精度浮點

-3.4 x 1038 到 + 3.4 x 1038

0.0f

double

64 位雙精度浮點

(+/-)5.0 x 10-324 到 (+/-)1.7 x 10308

0.0decimal

128 位精確的十進位制值,28-29 有效位數

(-7.9 x 1028 到 7.9 x 1028) / 100 到 28

0.0m

引用型別(reference types)

引用型別不包含儲存在變數中的實際資料,但它們包含對變數的引用.繼承自system.object類

引用型別儲存對其值的引用.它們指的是乙個記憶體位置.使用多個變數時,引用型別可以指向乙個記憶體位置.如果記憶體位置的資料是由乙個變數改變的,其他變數會自動反映這種值得變化

引用型別當宣告乙個類時,只在棧中分配一小片記憶體用於容納乙個位址,而此時並沒有為其分配堆上的記憶體空間.當使用new建立乙個類的例項時,分配堆上的空間,並把堆上空間的位址儲存到棧上分配的小片空間中.

引用型別的物件宗師在程序堆中分配(動態分配)

引用型別在棧中儲存乙個引用,其實際的儲存位置位於託管堆.簡稱引用型別部署在託管堆上(堆記憶體是.net中會由gc來自動釋放)

引用型別可以派生出新的型別,而值型別不能,因為所有的值型別都是密封(seal)的

引用型別可以包含null值,值型別不能(可空型別功能允許將null賦給值型別,如int?a=null)

引用型別變數的複製值只複製對物件的引用,而不複製物件本身.而將乙個值型別變數賦給另乙個值型別變數時,將複製包含的值

c#的引用型別包括:

(1)內建的引用型別有:object,dynamic和string

a,物件(object)型別是c#通用型別系統(common type system-cts)中所有資料型別的終極基類.object是system.object類的別名.所有物件(object)型別可以被分配任何其他型別(值型別、引用型別、預定義型別或使用者自定義型別)的值。但是,在分配值之前,需要先進行型別轉換。

b,動態(dynamic)型別您可以儲存任何型別的值在動態資料型別變數中。這些變數的型別檢查是在執行時發生的。動態型別與物件型別相似,但是物件型別變數的型別檢查是在編譯時發生的,而動態型別變數的型別檢查是在執行時發生的。

c,字串(string)型別允許給變數分配任何字串值。字串(string)型別是 system.string 類的別名。它是從物件(object)型別派生的。字串(string)型別的值可以通過兩種形式進行分配:引號和 @引號。

(2)使用者自定義引用型別有:class、陣列、inte***ce 或 delegate。

C 資料型別

一般來說,計算機要儲存和處理不同的資料型別,在c 中有基本的資料型別和使用者自定義資料型別以及引用型資料。我們先學習下基本的資料型別,也就是系統自帶的資料型別。每種資料型別都要佔據系統記憶體的一定空間,例如c 中的整數int 乙個整數佔4個位元組,也就是32位 計算機是用0和1二進位制來表示和處理資...

c 資料型別

型別可分為 值型別,引用型別 值型別 直接存放真正的資料,值型別都有固定的長度,值型別的變數都儲存在 堆疊 stack 上。作為值型別的變數,每個都有自己的資料,因此對乙個變數的操作不會影響其他變數。引用型別 儲存讀資料的記憶體位址的引用,位於受管制的堆 heap 上作為引用型別的變數可以引 用同一...

C 資料型別

bool system.boolean 1位元組 byte system.byte 1位元組無符號 sbyte system.sbyte 1位元組有符號 short system.int16 2位元組 ushort system.uint16 2位元組 int system.int32 4位元組 u...