为什么c#编译器允许我访问操作符方法内部对象的私有字段?



我有这样一个类:

class Foo
{
private int _value;
public static int operator +(Foo foo1, Foo foo2)
{
return foo1._value + foo2._value;
}
}

为什么我可以访问显式声明为privatefoo1._value?

Foo私有。您的方法是Foo的一部分,因此它可以完全访问自己。如果没有Foo的方法可以触及该字段:它永远不能被使用。