为什么以下代码无法编译(摘录)?
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
答案 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
。