有点奇怪的问题,但我想知道有人可以帮忙......
在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.