Доступ к частной собственности снаружи - PullRequest
0 голосов
/ 18 января 2019

Я столкнулся с «странным» поведением в машинописи:

    class A {
        private _prop;

        public a() {
            let x = new A();
            x._prop
        }
    }

не вызывает никаких исключений, в то время как я обращаюсь к частной собственности вне объекта.

Кто-нибудь знает:

  • если это нормальное поведение (наверное да)
  • где я могу найти литературу по этому поводу? Я нашел это очень запутанным ...

редактировать Я имел в виду: компилятор не показывает никаких исключений, когда я обращаюсь к частному свойству _prop извне объекта x. Я не говорю о времени выполнения.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

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

Вот эквивалент C # того же поведения (действительный)

public class A
{
    private int _prop;
    public void MyMethod()
    {
        var x = new A();
        x._prop = 5;
    }
}
0 голосов
/ 18 января 2019

Этот вид частного доступа разрешен на большинстве языков. Вы не можете получить доступ к частным лицам любого другого класса, но вы можете получить доступ к частным лицам текущего класса, даже если они являются частными лицами другого экземпляра класса.

Пример C # :

private: доступ к типу или члену возможен только с помощью кода в том же классе или структуре.

(без упоминания того, должен ли член получать доступ через this)

...