这段代码怎么编译?operator 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;
}
}
Run Code Online (Sandbox Code Playgroud)
Yur*_*ich 19
因为它在类中,所以它可以访问其中的私有变量.就像您的实例公共方法一样.它的工作方式也相反.您可以从实例成员访问私有静态成员以创建Monostate模式.
operator int()仍然是MyValue类的成员函数,因此可以访问MyValue类型的对象的所有字段.
请注意,静态只意味着需要将MyValue对象作为参数传递给函数.