在我正在建造的图书馆中,我遇到了一些(至少对我而言)奇怪的行为;
我有这个方法:
public class Lib
{
private string field = "field";
public string Field
{
get
{
return field;
}
}
public void Add(Lib lib)
{
string field = DoSomething(lib);
Console.WriteLine(field);
}
protected string DoSomething(Lib lib)
{
return lib.field;
}
}
因此,如果我从使用该库的程序中调用该方法:
Lib lib = new Lib();
Lib lib2 = new Lib();
lib.Add(lib2);
控制台给我"field"
作为输出......现在,我不太明白为什么会发生这种情况。我将该字段声明为私有,那么为什么一个类可以访问其他类的私有属性并且它没有给我一个关于访问限制的异常?!
在我的理解中,aLib
无论如何都可以访问它自己的字段,但是当我给该方法另一个实例时Lib
,第一个实例应该不可能访问秒的私有字段,因为......好吧,因为它是另一个实例和私有!