| 修飾詞 | 可存取範圍 | 適用對象 |
|---|---|---|
| `private` | 僅宣告類別內部 | 預設、內部實作細節 |
| `protected` | 宣告類別 + 衍生類別 | 提供給子類別擴充 |
| `internal` | 同一組件 (專案) 內 | 組件內部公用 API |
| `protected internal` | 同一組件 或 衍生類別 (C# 7.2 前為 OR) | 跨組件繼承場景 |
| `public` | 任何參考該組件的程式碼 | 對外公用 API |
C# 7.2 新增 `private protected`:同一組件內的衍生類別 (AND 語意)。
class MyClass
{
string PrivateMethod() => "Private";
protected string ProtectedMethod() => "Protected";
internal string InternalMethod() => "Internal";
public string PublicMethod() => "Public";
}
class Program
{
static void Main()
{
var obj = new MyClass();
// obj.PrivateMethod(); // 錯誤
// obj.ProtectedMethod(); // 錯誤
Console.WriteLine(obj.InternalMethod()); // Internal
Console.WriteLine(obj.PublicMethod()); // Public
}
}