这段代码怎么编译? 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;
}
}
答案 0 :(得分:19)
因为它在类中,所以它可以访问其中的私有变量。就像您的实例公共方法一样。它的工作方式也相反。您可以从实例成员访问私有静态成员以创建Monostate模式。
答案 1 :(得分:15)
private
表示该类的私有,而不是该实例的私有。
答案 2 :(得分:5)
operator int()仍然是MyValue类的成员函数,因此可以访问MyValue类型的所有对象字段。
请注意,static只表示需要将MyValue对象作为参数传递给函数。