мы можем получить доступ к закрытой переменной, используя объект

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

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

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

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

        Layer layer = new Layer ( );
        layer.children = new List<Layer> ( ); // Isn't .children private from the outside?
    }
}

Я могу получить доступlayer.Children в любом месте, это нормально, но как я могу получить доступlayer.children так как это личное?

Layer layer = new Layer ( );
layer.children = new List<Layer> ( );

работает только если код находится внутриLayer класс. Существует ли специальный код для обработки доступа к закрытым переменным по-разному, если он выполняется внутри содержащего класса, даже если доступ осуществляется извне?

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

this.children = ...

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

В чем причина этого?

Ответы на вопрос(3)

Ваш ответ на вопрос