为什么静态构造函数在引用时会抛出异常 另一个类中的常量字符串。
class MyClass
{
static MyClass()
{
ExamineLog();
}
static ExamineLog()
{
FilePath = HttpContext.Current.Server.MapPath(Helper.LogConfiguration);
}
}
class Helper
{
public const string LogConfiguration= "\rootpath\counters.txt";
}
抛出的异常是对象引用未设置到对象的实例。堆栈跟踪指向尝试读取常量值的行。有什么想法吗?
最佳答案
想法:
HttpContext
可能为 nullHttpContext.Current
可能为 nullHttpContext.Current.Server
可能为 null
进一步的想法:
Current
是 HttpContext
类的静态属性,因此 HttpContext
不是对象引用,并且不能为 null。如果您想简化调试,可以像这样更改代码(我假设 ExamineLog
应该声明为 void 方法):
static void ExamineLog()
{
var context = HttpContext.Current;
var server = context.Server;
FilePath = server.MapPath(Helper.LogConfiguration);
}
关于C# 构造函数和常量之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776347/