Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Домен специальных возможностей члена указывает разделы программы, на которые можно ссылаться. Если член вложен в другой тип, уровень специальных возможностей члена и домен специальных возможностей немедленно содержащего типа определяет его домен специальных возможностей.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Домен специальных возможностей типа верхнего уровня всегда включает по крайней мере текст программы проекта, в котором вы объявляете его. Другими словами, домен включает все исходные файлы в проекте. Домен специальных возможностей вложенного типа всегда включает по крайней мере текст программы типа, в котором вы объявляете его. Другими словами, домен — это тело типа, которое включает все вложенные типы. Домен специальных возможностей вложенного типа никогда не превышает значение содержащего типа. В следующем примере показаны эти понятия.
В этом примере содержится тип верхнего уровня, T1а также два вложенных класса M1 и M2. Классы содержат поля с разными объявленными специальными возможностями. В методе 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#.