C#构造函数和常量之谜

use*_*341 2 c# constructor class-constants

为什么静态构造函数在引用另一个类中的const字符串时抛出异常.

 class MyClass
 {  
      static MyClass() 
      { 
           ExamineLog();   
      }

      static ExamineLog()  
      {
          FilePath = HttpContext.Current.Server.MapPath(Helper.LogConfiguration);                
      }
}

class Helper
{  
      public const string LogConfiguration= "\rootpath\counters.txt";
}
Run Code Online (Sandbox Code Playgroud)

抛出的异常是未将对象引用设置为对象的实例.堆栈跟踪指向尝试读取常量值的行.有什么想法吗?

pho*_*oog 6

思考:

  • HttpContext 可能是null
  • HttpContext.Current 可能是null
  • HttpContext.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);                 
} 
Run Code Online (Sandbox Code Playgroud)