C ## if / #ifdef语法不能编译,为什么?

时间:2010-08-25 15:27:34

标签: c# .net syntax conditional-compilation

为什么以下代码无法编译(摘录)?

  public enum ApplicationType : int
  {
   CONSOLE = 1,
   WINDOWS_FORMS = 2,
   ASP_NET = 3,
   WINDOWS_SERVICE = 4,
   MUTE = 5
  }

        //#if( false)
        //#if (DEBUG && !VC_V7)
 #if( m_iApplicationType != ApplicationType.ASP_NET  )
        public class HttpContext
  {
   public class Current
   {
    public class Response
    {
     public static void Write(ref string str)
     {
      Console.WriteLine(str);
     }
    }
   }
  }
#endif

2 个答案:

答案 0 :(得分:5)

你得到什么错误?

在任何情况下,( m_iApplicationType == ApplicationType.ASP_NET )都不是编译时常量。

答案 1 :(得分:4)

#if与成员变量一起使用无效。它仅对您使用#define指令创建的符号进行操作,如下所示:

#define ASP_NET

#if(ASP_NET)
// put your conditional compilation code here
#endif

#if(CONSOLE)
// your console-related code goes here
#endif

在这种情况下,只编译#if(ASP_NET)块中的代码,因为未定义CONSOLE