Он доступен, потому что вы тот класс, в котором он определен!
Модификаторы доступа применяются к классам, а не к экземплярам класса. Это означает, что экземпляр класса A имеет доступ ко всем закрытым членам другого экземпляра класса A.
Полагаю, вы согласны со мной, что это нормально:
var p = this._person;
А как же это:
public void DoSomething(PersonInitializer personInitializer)
{
var p = personInitializer._person;
}
Согласно вашему предположению, этот код будет действительным в зависимости от ввода.
Пример:
DoSomething(this); // ok
DoSomething(other); // not ok
Это не имеет смысла: -)