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

Pat*_*ins 15 .net c# .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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Yur*_*ich 19

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

  • @Daok:因为你的静态方法是类的成员.如果那个静态方法在其他任何地方都不允许. (3认同)

tpo*_*wer 15

private工具的私有的类,而不是私人的实例.


Ste*_*yle 5

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

请注意,静态只意味着需要将MyValue对象作为参数传递给函数.