Как можно скомпилировать этот код? Код ниже в операторе 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; } }
Поскольку он находится в классе, он имеет доступ к закрытым переменным. Так же, как ваш экземпляр публичных методов. Это работает и наоборот. Вы можете получить доступ к закрытым статическим членам из элементов экземпляра, чтобы создать шаблон Monostate.
private означает приватный для класса и не приватный для экземпляра.
private
operator int () по-прежнему является функцией-членом класса MyValue и поэтому может обращаться ко всем полям объектов типа MyValue.
Обратите внимание, что static просто означает, что объект MyValue необходимо передать функции в качестве параметра.