A linguagem C# suporta o uso das mesmas diretivas de pré-processamento de compilação. Algumas nomes foram trazidos da linguagem C/C++, e outras específicas de C#.

Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. #region
  2. #define
  3. #if
  4. #else
  5. #elif
  6. #error /#warning
  7. #undef
  8. #line
  9. #nullable
  10. #pragma disable/enable
  11. DEBUG e RELEASE

A diretiva #region nos permite criar uma um bloco ou região nomeada que podem ser minimizadas ou contraídas por algumas IDEs. Usando essa diretiva podemos organizar trechos de código de acordo com um contexto.

Sintaxe
#region [nome_regiao]
//código
#endregion
Exemplo 1
using System;
class HelloWorld 
{
  public static void Main() {
    
    #region [variaveis]
        //variaveis
    #endregion
    
    #region [texto]
        //processamento .txt
    #endregion
    
    #region [pdf]
        //processamento .pdf
    #endregion
  }
}
Saída
-

Essa diretiva #define é usada para criar símbolos que possuem apenas seu nome. Diferente de C/C++, C# NÃO é permitido a criação de macros. Esssa diretiva devem sempre ser utilizado no topo do arquivo .cs.

Sintaxe
#define NOME_SIMBOLO
Exemplo 2
#define TUTORIAL
using System;

class HelloWorld 
{
  public static void Main() {
    
    //omitido    
  }
}
Saída
-

A diretiva #if é usada para checar, se um símbolo foi definido e então executar um trecho de código de acordo. Semelhante ao comando if.

Sintaxe
#if NOME_SIMBOLO
//código
#endif
Exemplo 3
#define TUTORIAL
using System;

class HelloWorld 
{
  public static void Main() 
  {
    
#if TUTORIAL
    Console.WriteLine("#define TUTORIAL");
#endif

  }
}
Saída
#define TUTORIAL

A diretiva #else em conjunto com a diretiva #if para checar e executar um trecho de código. Caso a checagem se true, executa o código do corpo #if. Caso contrário, executa o corpo do comando #else.

Sintaxe
#if NOME_SIMBOLO
//código
#else
//código
#endif
Exemplo 4
//#define TUTORIAL
using System;

class HelloWorld 
{
  public static void Main() 
  {
#if TUTORIAL
    Console.WriteLine("#define TUTORIAL");
#else
    Console.WriteLine("código");
#endif
  }
}
Saída
código

A diretiva #elif é utilizada quando precisamos fazer checagem em cascata de definições. Essa diretiva possui a mesma ídeia do comando if-else-if.

Sintaxe
#if NOME_SIMBOLO
//código
#elif NOME_SIMBOLO2
//código
#else
//código
#endif
Exemplo 5
//#define TUTORIAL
#define TESTE

using System;

class HelloWorld 
{
  public static void Main() 
  {
#if TUTORIAL
    Console.WriteLine("#define TUTORIAL");
#elif TESTE
    Console.WriteLine("#elif");
#else 
    Console.WriteLine("#else");
#endif
  }
}
Saída
#define TUTORIAL

A diretiva #warning exibe uma mensagem de alerta que é exibida durante o processo de compilação. Já a diretiva #error exibe uma mensagem de erro encerrando a compilação.

Sintaxe
#warning "mensagem de aviso"
#error "mensagem de erro"
Exemplo 9
using System;

class HelloWorld 
{
  public static void Main() 
  {
    #warning "mensagem de aviso"
    #error "mensagem de erro"
  }
}
Saída
main.cs(9,0): warning CS1030: #warning: `"mensagem de aviso"'
main.cs(10,0): error CS1029: #error: '"mensagem de erro"'
Compilation failed: 1 error(s), 1 warnings
  1. 05/08/2025 - revisão 2 - Ajustes: pontuais, 'objetivos', link 'Operadores', sintaxes, separaçao: 'if/else/elif' e error/warning
  2. 14/07/2024 - revisão 1 - Ajustes pontuais
  3. 12/03/2024 - versão inicial