一個值類型 一個引用類型
一個是存在棧上 一個存在堆裏 棧裏只存個引用
結構裏的成員不能初始化值 類可以
結構沒構造函數 類有構造函數
結構不能繼承 類可以
面試官再問 結果傳入方法修改後外部的結構值多少
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