首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 面試常見問答:多重繼承、存取修飾詞、String/StringBuilder、Array 複製、不可變性

     編輯:關於C語言

語言特性問答

Q: C# 支援多重繼承嗎?

A: 不支援類別多重繼承。但可實作多個介面,且 C# 8.0+ 支援介面預設實作,達到類似效果。

Q: protected 存取層級?

A: 僅限宣告類別本身及其衍生類別存取。

Q: private 欄位可被繼承嗎?

A: 會被繼承 (佔用記憶體佈局),但衍生類別不可直接存取。需透過基類 public/protected 成員間接操作。

Q: protected internal 意義?

A: 同一組件內 所有類別 + 衍生類別 (跨組件亦可) 可存取。邏輯為「OR」。

Q: private protected (C# 7.2+)?

A: 同一組件內的衍生類別 可存取。邏輯為「AND」。

核心類別問答

Q: immutable (不可變) 含義?

A: 資料值不可變更。變數可指向新物件,但原物件內容不變。如 string、DateTime、Tuple、record (預設)。

Q: System.String vs System.Text.StringBuilder?

特性StringStringBuilder
可變性不可變可變
拼接效能O(N²) 產生大量暫存物件O(N) 緩衝區擴展
適用場景少量拼接、字面常數、字典鍵大量迴圈拼接、動態構建
執行緒安全是 (不可變天然安全)否

Q: System.Array 能儲存不同型別資料嗎?

A: 不能。陣列為強型別,宣告時固定元素型別。需用 object[] 或集合 List<object>。

Q: Array.CopyTo() vs Array.Clone()?

方法行為回傳目標
Clone()淺層複製,建立新陣列新陣列 Array自動配置
CopyTo(dest, idx)淺層複製到現有陣列void需預先配置

淺層複製:陣列元素為參考型別時,僅複製參考,指向同一物件。深層複製需自行遞迴複製物件圖。

補充:現代 C# 相關新特性

  • record / record struct (C# 9+):內建不可變、值語義相等、with 表達式
  • readonly struct (C# 7.2+):結構體層級不可變
  • Span<T> / Memory<T>:高效能記憶體切片,替代部分需求
  • 介面預設實作 (C# 8.0+):interface I { void M() => ...; }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved