在Static方法中访问参数的私有成员?

时间:2009-10-27 14:16:23

标签: c# .net .net-2.0

这段代码怎么编译? 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;
    }
}

3 个答案:

答案 0 :(得分:19)

因为它在类中,所以它可以访问其中的私有变量。就像您的实例公共方法一样。它的工作方式也相反。您可以从实例成员访问私有静态成员以创建Monostate模式。

答案 1 :(得分:15)

private表示该类的私有,而不是该实例的私有。

答案 2 :(得分:5)

operator int()仍然是MyValue类的成员函数,因此可以访问MyValue类型的所有对象字段。

请注意,static只表示需要将MyValue对象作为参数传递给函数。