面試Struct 與 class 的區別

面試官問這兩個區別
一個值類型    一個引用類型
一個是存在棧上    一個存在堆裏 棧裏只存個引用
結構裏的成員不能初始化值    類可以
結構沒構造函數  類有構造函數
結構不能繼承  類可以

面試官再問 結果傳入方法修改後外部的結構值多少

struct AStruct
{
	public int x;
}

AStruct a = new AStruct()

void TestStruct(AStruct a)
{
	a.x = 5;
}
a.x = ?
我沒經歷過這個情況 說外面也是5 回來一試不對

我只碰到過這個情況

Vecter2 v2 = new Vecter2()
v2.x = 5; //這種操作還是同一個結構

Vecter2 v3 = v2; //一賦值就是另一個結構了與v2沒什麼關係了 相當於另一個值了 
v3.x=10;//

這時  v2.x 還是5 

結構確實讓人疑惑,其實可以理解成每傳遞一次就當是一個數字傳過去了
所以結構體大的時候頻繁傳遞會產生大量不必要的拷貝,適合輕量數據的情況 如 Color Vecter2 Vecter3


參考: http://www.runoob.com/csharp/csharp-struct.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章