成員的無障礙領域指定了你可以參考該成員的程式區塊。 若成員巢狀於其他類型中,則該成員的 可及 性層級與該型別的可及性域同時決定其可及性領域。
C# 語言參考資料記錄了 C# 語言最新版本。 同時也包含即將推出語言版本公開預覽功能的初步文件。
文件中標示了語言最近三個版本或目前公開預覽版中首次引入的任何功能。
小提示
欲查詢某功能何時首次在 C# 中引入,請參閱 C# 語言版本歷史的條目。
頂層型態的無障礙領域總是至少包含你宣告該專案的程式文本。 換句話說,該網域包含專案中的所有原始檔案。 巢狀型態的可及性領域總是至少包含你宣告該型別的程式文字。 換句話說,領域是型別體,包含所有巢狀型態。 巢狀類型的輔助功能定義域永遠不會超過包含類型的存取範圍。 以下範例說明這些概念。
這個範例包含最上層類型、 T1和 兩個巢狀類別和 M1M2。 類別包含具有不同宣告輔助功能的欄位。 在方法中 Main ,批注會遵循每個語句來指出每個成員的存取範圍定義域。 試圖提及無法存取成員的陳述則被註解刪除。如果你想看到因引用無法存取成員而產生的編譯錯誤,請逐一移除註解。
public class T1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
static T1()
{
// T1 can access public or internal members
// in a public or private (or internal) nested class.
M1.publicInt = 1;
M1.internalInt = 2;
M2.publicInt = 3;
M2.internalInt = 4;
// Cannot access the private member privateInt
// in either class:
// M1.privateInt = 2; //CS0122
}
public class M1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
}
private class M2
{
public static int publicInt = 0;
internal static int internalInt = 0;
private static int privateInt = 0;
}
}
class MainClass
{
static void Main()
{
// Access is unlimited.
T1.publicInt = 1;
// Accessible only in current assembly.
T1.internalInt = 2;
// Error CS0122: inaccessible outside T1.
// T1.privateInt = 3;
// Access is unlimited.
T1.M1.publicInt = 1;
// Accessible only in current assembly.
T1.M1.internalInt = 2;
// Error CS0122: inaccessible outside M1.
// T1.M1.privateInt = 3;
// Error CS0122: inaccessible outside T1.
// T1.M2.publicInt = 1;
// Error CS0122: inaccessible outside T1.
// T1.M2.internalInt = 2;
// Error CS0122: inaccessible outside M2.
// T1.M2.privateInt = 3;
// Keep the console open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
C# 語言規格
如需詳細資訊,請參閱<C# 語言規格>。 語言規格是 C# 語法和使用方式的最終來源。