Синтаксис C# #if / #ifdef не компилируется, почему?
Почему приведенный ниже код не компилируется (фрагмент)?
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 ответа
Какую ошибку вы получаете?
В любом случае, ( m_iApplicationType == ApplicationType.ASP_NET )
не является постоянной времени компиляции.
Ваше использование #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
не определено.