我如何能够通过引用将私有对象传递给另一个 class?
How am i able to pass private object to another class by reference?
我刚刚注意到我可以通过引用将私有对象传递给另一个 class
我想这应该是不可能的,但它工作正常
举个例子
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();
}
}
private
意味着仅对 变量 私有,而不是对 引用的 实际实例 由那个变量。所以你的class中的referenceswYandexErrors
当然是private
,对方当然是看不到的。但是,当您通过 instance by reference 时,您当然可以在第一个访问 instance class.
更清楚的是,以下 不 在 class csLogger
中工作并导致编译器错误,因为您无法访问 swYandexErrors
在 csLogger
内:
public static void DoSomething()
{
ClassA.swYandexErrors.Read();
}
顺便说一句:您甚至不需要在您的方法中使用 ref
-关键字,因为您不需要 重新分配 传递的 StreamWriter
.您所做的就是在传递的实例上调用成员。
我刚刚注意到我可以通过引用将私有对象传递给另一个 class
我想这应该是不可能的,但它工作正常
举个例子
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();
}
}
private
意味着仅对 变量 私有,而不是对 引用的 实际实例 由那个变量。所以你的class中的referenceswYandexErrors
当然是private
,对方当然是看不到的。但是,当您通过 instance by reference 时,您当然可以在第一个访问 instance class.
更清楚的是,以下 不 在 class csLogger
中工作并导致编译器错误,因为您无法访问 swYandexErrors
在 csLogger
内:
public static void DoSomething()
{
ClassA.swYandexErrors.Read();
}
顺便说一句:您甚至不需要在您的方法中使用 ref
-关键字,因为您不需要 重新分配 传递的 StreamWriter
.您所做的就是在传递的实例上调用成员。