我有以下代码:
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)
{
}
}
为什么 _person
可以从 x
访问,即使它是 private
?我能做些什么来“保护”_person?
最佳答案
它是可访问的,因为你是定义它的类!
访问修饰符适用于类,而不是类的实例。这意味着,A 类的一个实例可以访问 A 类的另一个实例的所有私有(private)成员。
我假设,你同意我的看法,这是可以的:
var p = this._person;
但是这个呢:
public void DoSomething(PersonInitializer personInitializer)
{
var p = personInitializer._person;
}
根据您的假设,此代码将根据输入有效。
示例:
DoSomething(this); // ok
DoSomething(other); // not ok
这没有意义:-)
关于c# - 为什么我的隐私可以访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244997/