我如何能够通过引用将私有对象传递给另一个 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 中工作并导致编译器错误,因为您无法访问 swYandexErrorscsLogger 内:

public static void DoSomething()
{
    ClassA.swYandexErrors.Read();
}

顺便说一句:您甚至不需要在您的方法中使用 ref-关键字,因为您不需要 重新分配 传递的 StreamWriter.您所做的就是在传递的实例上调用成员。