我有以下代码:
public class PersonInitializer
{
private Person _person;
public static Person LoadFromFile(string path)
{
PersonInitializer x = new PersonInitializer();
Person p = x._person; //Why am I accessible?
return x.LoadFromFile(); //Sure.
}
public Person LoadFromFile(string path)
{
}
}
Run Code Online (Sandbox Code Playgroud)
为什么_ 即使它person可以访问?我该怎样做才能"保护"_person?xprivate
Dan*_*rth 11
它是可访问的,因为你是它所定义的类!
访问修饰符适用于类,而不适用于类的实例.这意味着,A类的实例可以访问另一个A类实例的所有私有成员.
我认为,你同意我的意见,这是可以的:
var p = this._person;
Run Code Online (Sandbox Code Playgroud)
但是这个怎么样:
public void DoSomething(PersonInitializer personInitializer)
{
var p = personInitializer._person;
}
Run Code Online (Sandbox Code Playgroud)
根据您的假设,此代码将根据输入有效.
例:
DoSomething(this); // ok
DoSomething(other); // not ok
Run Code Online (Sandbox Code Playgroud)
这毫无意义:-)
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |