A: 不支援類別多重繼承。但可實作多個介面,且 C# 8.0+ 支援介面預設實作,達到類似效果。
protected 存取層級?A: 僅限宣告類別本身及其衍生類別存取。
private 欄位可被繼承嗎?A: 會被繼承 (佔用記憶體佈局),但衍生類別不可直接存取。需透過基類 public/protected 成員間接操作。
protected internal 意義?A: 同一組件內 所有類別 + 衍生類別 (跨組件亦可) 可存取。邏輯為「OR」。
private protected (C# 7.2+)?A: 同一組件內的衍生類別 可存取。邏輯為「AND」。
immutable (不可變) 含義?A: 資料值不可變更。變數可指向新物件,但原物件內容不變。如 string、DateTime、Tuple、record (預設)。
System.String vs System.Text.StringBuilder?| 特性 | String | StringBuilder |
|---|---|---|
| 可變性 | 不可變 | 可變 |
| 拼接效能 | O(N²) 產生大量暫存物件 | O(N) 緩衝區擴展 |
| 適用場景 | 少量拼接、字面常數、字典鍵 | 大量迴圈拼接、動態構建 |
| 執行緒安全 | 是 (不可變天然安全) | 否 |
System.Array 能儲存不同型別資料嗎?A: 不能。陣列為強型別,宣告時固定元素型別。需用 object[] 或集合 List<object>。
Array.CopyTo() vs Array.Clone()?| 方法 | 行為 | 回傳 | 目標 |
|---|---|---|---|
Clone() | 淺層複製,建立新陣列 | 新陣列 Array | 自動配置 |
CopyTo(dest, idx) | 淺層複製到現有陣列 | void | 需預先配置 |
淺層複製:陣列元素為參考型別時,僅複製參考,指向同一物件。深層複製需自行遞迴複製物件圖。
record / record struct (C# 9+):內建不可變、值語義相等、with 表達式readonly struct (C# 7.2+):結構體層級不可變Span<T> / Memory<T>:高效能記憶體切片,替代部分需求interface I { void M() => ...; }