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

В C # (и многих других языках) вполне законно получить доступ к закрытым полям других экземпляров того же типа. Например:

public class Foo
{
    private bool aBool;

    public void DoBar(Foo anotherFoo)
    {
        if (anotherFoo.aBool) ...
    }
}

В соответствии со спецификацией C # ( разделы 3.5.1, 3.5.2) заявляет, что доступ к закрытым полям относится к типу, а не экземпляру. Я обсуждал это с коллегой, и мы пытаемся придумать причину, по которой это работает так (скорее, чем ограничение доступа к одному и тому же экземпляру).

Лучший аргумент, который мы могли бы придумать, - это проверки равенства, когда класс может захотеть получить доступ к закрытым полям, чтобы определить равенство с другим экземпляром. Есть ли другие причины? Или какая-то золотая причина это абсолютно означает, что он должен работать вот так, иначе что-то будет совершенно невозможно?

149
задан AustinWBryan 8 September 2018 в 01:32
поделиться