public class Class1
{
private object field;
public Class1(Class1 class1)
{
this.field = class1.field;
}
private void Func(Class1 class1)
{
this.field = class1.field;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码编译和工作.但为什么?我一直认为私有成员只能在类范围内访问.MSDN也这样说:
private关键字是成员访问修饰符.私有访问是最不宽容的访问级别.私有成员只能在类的主体或声明它们的结构体中访问
那是因为通过将其标记为私有,您告诉编译器只能Class1访问该变量.即使您的构造函数是public,变量本身仍然在其中声明Class1,因此它有权修改它.
即使它们可能是两个不同的实例,它们也是相同的变量声明.
但是,如果我这样做Class2,它将无法工作:
Class1 c1 = new Class1();
c1.field = "value"; // Won't compile
Run Code Online (Sandbox Code Playgroud)
这实际上是从你的报价中解释的:
私人会员只能在班级的机构内访问
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |