淺析C#類和C#結構體的關系
C#類:類是C# 中功能最為強大的數據類型,類也定義了數據類型的數據和行為。然后,程序員可以創建作為此類的實例的對象。
C#結構體:結構體是輕量型的類,使用開銷相對于類較小。
C#類和C#結構體兩者的關系:
1.數據類型:類和結構體都是數據類型,類是引用類型,結構體是值類型。
2.繼承性:類可以繼承和被繼承,而結構體隱式繼承于object,不可以繼承(除接口以外)和被繼承
3.構造函數:類和結構體都有默認(無參)構造函數,只不過結構體不能顯示聲明默認(無參)構造函數,
4.字段初始化:類可以對字段聲明時賦值初始化,而結構體不可以(除const和static之外),結構體的字段必須在構造函數中進行初始化。
5.實例化:結構體實例化時可以不使用new,,如果不使用new,那么在初始化所有字段之前,字段將保持未賦值狀態且對象不可用。而類必須使用new進行實例化。
如何選擇C#結構體還是C#類
討論了結構與類的相同之處和差別之后,下面討論如何選擇使用結構還是類:
1.堆棧的空間有限,對于大量的邏輯的對象,創建類要比創建結構好一些
2.結構表示如點、矩形和顏色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則將為引用每個對象分配附加的內存。在此情況下,結構的成本較低。
3.在表現抽象和多級別的對象層次時,類是***的選擇
4.大多數情況下該類型只是一些數據時,結構時***的選擇 ,struct 類型是一種值類型,通常用來封裝小型相關變量組,例如,矩形的坐標或庫存商品的特征。
【編輯推薦】