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