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

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

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?
    }
}

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

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

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

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

this.children = ...

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

What '

Он отображает кнопку и текст помимо кнопки. ...

В форме HTML у меня есть поле файла, подобное этому:

<div class="filefield">
<input type="file" name="myfile" id="fileinput">
</div>

Оно отображает кнопку и некоторый текст помимо кнопки. Если файл еще не выбран, отображается следующий текст: Файл не выбран . Если файл уже выбран, отображается имя файла.

Этот текст отображается справа от кнопки. Я хочу, чтобы он отображался под кнопкой. Я пробовал множество вещей в CSS, но ничего не работает. Файл не выбран всегда отображается с правой стороны кнопки, даже если и div, и input имеют фиксированную ширину, равную ширине кнопки и фиксированной высоты, достаточной для размещения кнопки и двух строк текста, текст по-прежнему отображается справа, за пределами div, а не ниже места внутри div. Как сделать так, чтобы текст отображался под кнопкой?

9
задан miernik 20 April 2011 в 23:06
поделиться