[英]Class with static instance inside
public class MyClass
{
// private fields
//////////////////////////////////////////////////////////////////////////
public MyClass(string param1, string param2)
{
// do some stuff
}
private static object syncRoot = new Object();
private static volatile MyClass instance = null;
public static MyClass Log
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new MyClass();
}
}
return instance;
}
}
private MyClass()
{
// do some stuff
}
public void myFunction(string txt, uint flags)
{
// do some stuff
}
}
这是我的课,我用这种方式
MyClass.Log.myFunction("some string", flags);
但是当我在其他类函数中使用此类时,经常会得到MyClass为null或MyClass.Log为null的错误。
我做错了什么?
除了这里的问题是我得到的错误:
System.NullReferenceException: Object reference not set to an instance of an object.
at MyNamespace.MyClass..ctor()
at MyNamespace.MyClass.get_Log()
您显示的代码看起来不错。
MyClass
不能为null
因为它是一个类。 Log
也不应该为null
,您的单例实现看起来不错。
我的猜测是问题在于您正在使用MyClass
的无参数构造函数。 我猜想myFunction
以某种方式使用仅在采用两个参数的构造函数中初始化的东西。
实际上,根据您的堆栈跟踪,问题出在无参数构造函数内部。 我想您正在尝试在其中登录某些内容,例如: instance.Log(...);
。 那是行不通的,因为那时instance
仍然为null
。 您应该只使用Log(...)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.