Mon*_*RPG -1 .net c# private-members .net-4.6.2
我只是注意到我能够通过引用将私有对象传递给另一个类
我猜这不应该是可能的,但它工作正常
这是一个例子
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();
}
}
Run Code Online (Sandbox Code Playgroud)
private意味着只是私人为变量,而不是为实际的实例这是由该变量引用.因此,参考 swYandexErrors它是private在你的类当然是另一种不可见的.但是,当您通过引用传递实例时 ,您当然可以访问第一个类中的实例.
为了更清楚以下并没有在课堂上工作csLogger,并导致一个编译器错误,你不容访问swYandexErrors内csLogger:
public static void DoSomething()
{
ClassA.swYandexErrors.Read();
}
Run Code Online (Sandbox Code Playgroud)
ref顺便说一下:你甚至不需要在你的方法中使用-keyword,因为你没有重新分配传递的StreamWriter.您所做的就是在传递的实例上调用成员.
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |