| 修飾詞 | 類別內部 | 同組件衍生類別 | 同組件其他類別 | 不同組件衍生類別 | 不同組件其他類別 |
|---|---|---|---|---|---|
private | ✔ | ✘ | ✘ | ✘ | ✘ |
protected | ✔ | ✔ | ✘ | ✔ | ✘ |
internal | ✔ | ✔ | ✔ | ✘ | ✘ |
protected internal | ✔ | ✔ | ✔ | ✔ | ✘ |
public | ✔ | ✔ | ✔ | ✔ | ✔ |
private protected (C# 7.2+) | ✔ | ✔ | ✘ | ✘ | ✘ |
public — 完全公開無任何限制,任何能引用該組件的程式碼皆可存取。適用於公開 API、介面實作。
protected — 衍生類別可見限定於「宣告該成員的類別」及「衍生自該類別的類別」。跨組件仍生效。適用於基類提供給子類擴充的方法/欄位。
internal — 組件內部公開(預設)僅限「同一組件」內的程式碼存取。不同組件即使衍生也不可見。適用於組件內部協作、隱藏實作細節。
protected internal — 衍生類別 或 同組件「protected」與「internal」的邏輯 OR:同組件任意類別、或不同組件的衍生類別皆可存取。適用於跨組件擴充同時允許組件內自由使用。
private — 僅類別內部最嚴格限制,僅宣告該成員的類別本身可存取。巢狀類別也可存取外層 private 成員。適用於封裝實作細節。
private protected — 衍生類別 且 同組件 (C# 7.2+)「protected」與「internal」的邏輯 AND:必須同時滿足「同組件」且「衍生類別」。比 protected 更嚴格,比 internal 更精準。
private,需要時再放寬。protected(跨組件)或 private protected(僅組件內)。internal。public。protected internal。