Модификаторы доступа в C#

Допустим, я задал классу модификатор доступа internal, а переменной в этом классе public. Вопрос, эта переменная будет иметь модификатор доступа internal(как модификатор доступа класса) или public(как модификатор доступа переменной)?


Ответы (1 шт):

Автор решения: bearpro

К public переменной можно обратиться из любого места сборки, где объявлен internal класс.
Разумеется, для этого ещё нужно получить экземпляр класса.

Пояснение

Модификатор internal у класса означает что нельзя будет использовать его извне той сборки, в котрой он объявлен (то есть нельзя в другой сборрке создать переменную с таким типом, вызвать конструктор этого класса, или унаследоваться от него, а так же обращаться к его статическим членам).
При этом внутри той сборки, в которой класс объявлен нельзя сделать public член у public класса, возвращающий экземпляр internal класса - об этом позаботится компилятор, и выкинет CS0050.
В конечном счёте, это означает что в других сборках никак нельзя получить экземпляр internal класса.

Модификтор public у члена класса означает что к нему может обратиться кто-угодно, но только через экземпляр класса.

В документации можно почитать: internal (C# Reference).

→ Ссылка