存储对象的引用

Kin*_*isG 9 c# c++

有点奇怪的问题,但我想知道有人可以帮忙......

在C++中,我可以做这样的事情

class MyOtherClass
{
     private:
         MyLogger* logger;
     public:
         MyOtherClass (MyLogger* logger)
              : logger (logger)
         {}
};

class MyClass
{
     private:
         MyLogger* logger;
     public:
         MyClass (MyLogger* logger)
              : logger (logger)
         {}
};

int main (int c, char** args)
{
    MyLogger* logger = new MyLogger ();
    /* Code to set up logger */
    MyOtherClass* myOtherClass = new MyOtherClass (logger);
    MyClass* myClass = new MyClass (logger);
}
Run Code Online (Sandbox Code Playgroud)

因此,每个其他对象(myOtherClass和myClass)都将包含一个指向logger的指针,因此它们将调用相同的logger类.但是,我如何在C#中实现同样的目标?有没有办法存储一个引用或指向全局对象的指针 - 我猜测在C#中我是否有类似的东西

public class MyClass
{
     private MyLogger logger = null;

     public MyClass (MyLogger _logger)
     {
         logger = _logger;
     }
};
Run Code Online (Sandbox Code Playgroud)

它实际上是将类变量记录器分配给_logger的副本?或者我正在混淆:S

非常感谢任何帮助,并提前感谢您!

Tej*_*ejs 13

它在C#中实际上要简单得多.

基本上,你可以这样做:

MyLogger logger = new MyLogger();
MyOtherClass myOtherClass = new MyOtherClass(logger);
MyClass myClass = new MyClass(logger);
Run Code Online (Sandbox Code Playgroud)

在C#中,类基本上作为引用保留(实际上只是引擎盖下的指针).在此片段中,您将引用传递logger给两个对象的构造函数.该引用是相同的,因此每个实例具有相同的MyLogger实例.

在这个特定的例子中,你几乎只需要删除指针syntax = D.