我刚注意到我能够通过引用
将私有对象传递给另一个类我猜这不应该是可能的,但它可以正常工作
这是一个例子
private static StreamWriter swYandexErrors; // in classA
csLogger.logAnyError(ref swYandexErrors, $"msg", E); // in classA
// in class csLogger
public static void logAnyError(ref StreamWriter swError,
string srError, Exception E = null)
{
lock (swError)
{
swError.WriteLine("");
swError.Flush();
}
}
答案 0 :(得分:5)
private
表示仅对变量私有,而不是实际实例,由该变量引用。因此,您班级中swYandexErrors
的{em>参考 private
当然对另一个人不可见。但是,当您通过引用传递实例 时,您当然可以访问第一个类中的实例。
更明确以下内容不在类csLogger
中工作并导致编译器错误,因为您无法访问swYandexErrors
中的csLogger
:
public static void DoSomething()
{
ClassA.swYandexErrors.Read();
}
顺便说一句:您甚至不需要在方法中使用ref
- 关键字,因为您重新分配传递的StreamWriter
。你所做的就是在传递的实例上调用成员。