Какие модификаторы доступа есть в C#?
В C# есть следующие модификаторы досупа:
private
private protected
protected
internal
protected internal
public
Вам надо определить в классе переменную, которая должна быть доступна из любого места в текущем проекте. Какой модификатор (или модификаторы, если их несколько) вы будете использовать?
internal
protected internal
public
В чем различие между модификаторами protected и private protected?
Члены класса, определенные с этими модификаторами, могу быть доступны только в текущем классе или в классах-наследниках. Но если модификатор protected гарантирует доступ для любого класса-наследника вне зависимости от того, в каком прокте (сборке) он расположен. А модификатор private protected делает члены класса доступными только для классов-наследников, которые размещены в том же проекте, где определен исходный класс.
Если классы и члены класса не имеют никаких модификаторов, какие модификаторы доступа к ним применяются по умолчанию?
Для классов, размещенных непосредственно в пространстве имен, модификатор доступа по умолчанию - internal. Для классов, размещенных внутри других классов (вложенных классов), модификатор по умолчанию private. А для членов класса модификатор доступа по умолчанию - private.
Что выведет на консоль следующая программа и почему?
class Person { int age = 26; string name = "Tom"; public Person(int age, string name) { this.age = age; this.name = name; } } class Program { static void Main(string[] args) { Person person = new Person(19, "Bob"); Console.WriteLine(person.name); Console.ReadKey(); } }
Программа не скомпилируется, поскольку переменная name, к которой мы хотим обратиться в методе Main, не имеет модификаторов. Следовательно, по умолчанию она имеет модификатор доступа private. Поэтому вне класса Person к этой переменной мы обратиться не можем.