Подтвердить что ты не робот

Доступ к частному члену параметра в статическом методе?

Как этот код может компилироваться? Код ниже в операторе int МОЖЕТ получить доступ к частной переменной класса MyValue? Почему?

class Program
{
    static void Main(string[] args)
    {
        Myvalue my = new Myvalue(100);
        Console.WriteLine(my + 100);
        Console.Read();
    }
}


public class Myvalue
{
    private int _myvalue;

    public Myvalue(int value)
    {
        _myvalue = value;
    }

    public static implicit operator int(Myvalue v)
    {
        return v._myvalue;
    }
}
4b9b3361

Ответ 1

Поскольку он находится в классе, он имеет доступ к закрытым переменным в нем. Точно так же, как ваши обычные методы. Это работает и наоборот. Вы можете получить доступ к частным статическим членам из членов экземпляра, чтобы создать шаблон Monostate.

Ответ 2

private означает закрытый для класса и не закрытый для экземпляра.

Ответ 3

оператор int() по-прежнему является функцией-членом класса MyValue и поэтому может обращаться ко всем областям объектов типа MyValue.

Обратите внимание, что статический просто означает, что объект MyValue должен быть передан функции как параметр.