總結起來,兩者共有如下區別:
1、結構是值類型,類則是引用類型。因此前者是放在棧(Stack)裡,後者則僅僅是將引用地址存放在棧裡,而具體的值則存放在堆(heap)裡。如下圖所示:
2、據第1點可以得出結論,那就是類對象通常用來傳遞大數據,而結構對象則用來傳遞小數據。
3、類可以被繼承,而結構則不支持。
4、結構對象不能像類對象一樣賦值為null。
5、結構不能像類一樣定義析構器。
6、結構不能像類一樣定義為抽象的。
7、在結構中不能重寫方法,除非是object類型的如下方法:
Equals()
GetHashCode()
GetType()
ToString()
若要讓結構具有多態特性,可以讓其實現接口。
8、在類中定義的事件是線程安全的,而結構則不是。