c#把資料型別分為兩種:值型別和引用型別。
值型別的變數直接指向儲存的值,引用型別的變數指向值的引用。[理解:引用就像乙個櫃子的號碼牌,可以順藤摸瓜找到櫃子。假如你再次對乙個值型別的變數賦值,那麼就會改變值,假如你再次對乙個引用型別的變數賦值,那麼就只是換了乙個號碼牌,指向了其他的櫃子,對前乙個櫃子是不做修改的。]
這兩種型別的資料儲存在記憶體的不同地方,值型別資料儲存在堆疊中,而引用型別的資料(值的引用)儲存在託管堆上。
int i=20;int j=i;
int定義整數型別的變數,整數型別屬於值型別,j在賦值的時候複製了i的值,所以這會在記憶體的兩個地方儲存值20,如果改變其中乙個,不會影響另外乙個。
a.color = "
red"
;b.color = "
green
";在第二行設定了蘋果的顏色是紅色。
在第三行我們新增了乙個新變數,賦值了a這個引用型別的資料,所以b也是指向了a指向的那個蘋果,並沒有產生第二個蘋果。
在第四行,我們修改b指向的蘋果的顏色為綠色,這時候實際上檢視a.color也會發現蘋果的顏色是綠色了,因為始終就只有乙個蘋果呀。
這表示讓乙個蘋果型別的變數不指向任何實際的蘋果,如果你想使用這個變數a代表的實際的蘋果,就會報錯,因為沒有東西呀,怎麼能使用呢。值型別的變數就不可以賦值null,這是引用型別的專利。
當已經沒有任何乙個變數指向某個例項的時候,這個例項就不能被訪問到了,clr的垃圾收集器會定期找尋這樣的例項,刪除它們,把它們占用的記憶體返回給作業系統。
c#有15個預定義型別,其中13個是值型別,兩個是引用型別(string和object)
13個值型別中有8個整型:。
13個值型別中有2個浮點型別:{float:32位單精度浮點數}{double:64位雙精度浮點數}。
13個值型別中還有:{decimal:通常用於財務計算的128位高精度十進位制表示法}{bool:用於包含布林值true或false}{char:為了儲存單個字元的值}。
值型別的賦值方法:
int i = 1234;uint ui = 1234u
;long l = 1234l
;long x = 0x12ab;//
用16進製制賦值需新增0x字首
ulong ul = 1234ul
;float f = 12.3f
double d = 12.3
;decimal d = 12.30m
;bool b = true
;char c = 'a'
;char c = '
\n';//
轉義符
2個預定義的引用型別:{object:根型別,物件導向概念}{string:字串型別,但擁有許多值型別的特性,使它常被誤認為值型別}
理解C 系列 核心C 列舉
1代表s號 2代表m號 3代表l號 4代表xl號 5代表xxl號 int 尺號 0 if 尺號 2 快遞發m號的衣服 宣告列舉 請原諒我使用了中文漢字 public enum尺號 未知,s,m,l,xl,xxl 使用列舉 尺號 ch 尺號.m if ch 尺號.m 如果沒有注釋又沒有列舉,那麼除了開...
資料型別總結 C語言理解
才疏學淺,下面的結論摘自 c primer plus 第6版 美 stephen prata著 c 有多種的資料型別。基本資料型別分為兩大類 整數型別和浮點數類 型。通過為型別分配的儲存量以及是有符號還是無符號,區分不同的整數類 型。最小的整數型別是char,因實現不同,可以是有符號的char或無符...
C 資料型別 復合型別的理解技巧
復合型別的宣告符可以從右向左閱讀 最右側的是宣告符是直接型別 左側的宣告符是復合型別依賴的基本型別 const int p ci 表示p是乙個指標,const int表示指標指向的乙個常量int p是可以被重新賦值的,但是p指向的int不能被改變 int const p i const表示p是乙個常...