若履歷寫著「熟悉 C#」,以下 20 題核心觀念必須秒答。每題附關鍵字與延伸思考,助你快速檢視盲點。
set 存取子的隱含參數名稱?value,型別與屬性宣告型別相同。
類別名稱後加冒號 + 基底類別名稱:class Child : Base。
類別不支援,但介面支援多重實作。類別對介面稱為「實作」而非繼承。
protected 成員存取範圍?僅限衍生類別(直接或間接繼承)內部存取。
會繼承但不可存取。記憶體配置包含私有欄位,但編譯器封鎖衍生類別存取。
protected internal 意義?同組件內 = public,跨組件 = protected。等價於 protected ∪ internal。
兩個。一旦自訂任何建構子,編譯器不再產生預設無參數建構子,必須手寫 public MyClass() {}。
System.Object。
多載:同名稱、不同參數清單(型別/個數/順序)。覆寫:衍生類別改寫虛擬方法行為,簽章必須完全一致。
virtual 關鍵字含義?允許衍生類別使用 override 覆寫該方法。
不能。覆寫方法簽章必須一致,static 修飾詞不屬於簽章一部分。
不能。私有成員對衍生類別不可見,自然無法覆寫。
加 sealed 關鍵字:public sealed class FinalClass。
類別標 public,方法標 sealed override(該方法必須先在基底類別為 virtual)。
不可實例化、可包含抽象方法(無實作)與具體方法。衍生類別必須實作所有抽象方法才能實例化。
1. 含抽象方法。2. 未完全實作基底抽象方法。
僅包含 public abstract 方法(隱含)的契約,所有方法皆需由實作類別實作。
介面定義「契約」,預設皆為 public。private/protected 違背契約公開性質。
可。同名方法可用顯式介面實作區分:void IFaceA.Method()、void IFaceB.Method()。
介面:全抽象、無欄位、無建構子、多重實作。抽象類別:可有實作/欄位/建構子、單一繼承、可定義存取修飾詞。
參數型別不同、個數不同、順序不同。回傳型別、參數名稱、修飾詞不參與多載解析。
const vs readonly 差異?const:編譯期常數、隱含 static、可用於區域變數。readonly:執行期常數(initonly)、屬於實例/靜態欄位、可在建構子指派。
String vs StringBuilder 差異?String:不可變,每次操作產生新物件。StringBuilder:可變緩衝區,提供 Append/Remove 等原地修改方法,適合大量字串操作。
IDisposable 模式與 using。