概要:
C#中將資料型別分為值型別(value type)和參考型別(reference type)
值型別:
值型別變數直接包含其本身的資料,在定義一個值型別變數后,將直接為該變數分配空間,可以直接賦值和使用,
列舉值型別:
![]()

eg:

用變數“a”為變數“b”賦值,是將“a”所在記憶體的值復制給“b”,執行 b=50之后,因為不在同一記憶體空間,所以b的值為50,a的值仍為100
參考型別:
參考型別變數本身并不包含資料,只是存盤對資料的參考,資料保存在其他位置,參考型別變數在定義時并不會分配空間,只是在對其實體化時,才真正的分配存盤空間,
eg:

使用物件“c”為“d”賦值,是將“c”物件的參考復制給了“d”,即兩個物件指向同一記憶體中的資料,因此改變c的欄位值也就改變了d的欄位值,反之亦然,因此執行c.Radius=10之后,c和d的radius值都變為10
裝箱和拆箱:
裝箱:值型別轉換為參考型別
拆箱:參考型別轉換為值型別
int a = 56; object box = a;//裝箱 int c = (int)box;//拆箱
關于值型別和參考型別的使用:
1.在C#中,string str = null 與 string str = “” 的區別
答:
string str = null :不分配記憶體空間
string str = "" :分配長度為空字串的記憶體空間,
2.Strings = new String("xyz");創建了幾個String Object?
答:
兩個物件,一個是“xyx”,一個是指向“xyx”的參考物件s,
3.dotnet中類(class)與結構(struct)的異同?
答:
Class可以被實體化,屬于參考型別,是分配在記憶體的堆上的;
Struct屬于值型別,是分配在記憶體的堆疊上的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/61609.html
標籤:C#
上一篇:Lambda運算式
下一篇:c# 委托內容進階
