Синтаксис 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 не определено.

Другие вопросы по тегам