承接上篇,本文進一步闡述結構與類在繼承性、內部結構及選用策略上的不同。
sealed)。但可實作介面。sealed,否則可繼承其他類與介面,也可被繼承。// 結構實作介面範例
interface IImage { void Paint(); }
struct Picture : IImage {
public void Paint() { /* 繪圖邏輯 */ }
private int x, y, z;
}
| 特性 | 結構 | 類 |
|---|---|---|
| 預設建構函式 | 無(可自訂) | 有 |
| 解構函式 | 無 | 有 |
| abstract / sealed | 不支援 | 支援 |
| protected 修飾詞 | 不可用 | 可用 |
| 欄位初始化 | 不可在宣告時初始化 | 可初始化 |
| new 關鍵字 | 可選(不使用時欄位未賦值) | 必須使用 |
結構為實值型別,配置於堆疊;類為參考型別,配置於堆積。結構指派會建立副本,類指派僅複製參考。