Почему и как C# позволяет получать доступ к частным переменным вне самого класса, когда они находятся внутри того же содC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему и как C# позволяет получать доступ к частным переменным вне самого класса, когда они находятся внутри того же сод

Сообщение Anonymous »

Не знаю, достаточно ли информативен вопрос, но почему и как такое поведение существует?:

Код: Выделить всё

public class Layer
{
public string Name { get; set; }

private IEnumerable children;
public IEnumerable Children
{
get { return this.children.Where ( c => c.Name != null ).Select ( c => c ); }
set { this.children = value; }
}

public Layer ( )
{
this.children = new List ( ); // Fine

Layer layer = new Layer ( );
layer.children = new List ( ); // Isn't .children private from the outside?
}
}
Я могу получить доступ к Layer.Children где угодно, это нормально, но как я могу получить доступ к Layer.Children, если он частный?

Код: Выделить всё

Layer layer = new Layer ( );
layer.children = new List ( );
работает, только если код находится внутри класса Layer. Существует ли специальный код для другой обработки доступа к частным переменным, если он выполняется внутри содержащего его класса, даже если доступ осуществляется извне?

Я знаю причину использования:< /p>

Код: Выделить всё

this.children = ...
внутри содержащего класса, но создание новых экземпляров и изменение их снаружи, даже если они все еще находятся внутри содержащего класса, не кажется хорошей практикой.

По какой причине это разрешено?

Подробнее здесь: https://stackoverflow.com/questions/573 ... -class-its
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»