Compartilhar via


#if (Referência de C#)

Quando o compilador C# encontra uma política de#if se houver, seguida por uma diretiva de #endif , irá compilar o código entre as diretivas somente se o símbolo especificado está definido. Diferentemente de C e C++, você não pode atribuir um valor numérico para um símbolo; a instrução #if em C# é booleano e testa somente se o símbolo foi definido ou não. Por exemplo,

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif

Você pode usar os operadores == igualdade (), ! = (desigualdade) para testar somente para true ou false . os meios verdadeiros o símbolo são definidos. a instrução #if DEBUG tem o mesmo significado que #if (DEBUG == true). Você pode usar os operadores && (e), || (ou), e ! (não) para avaliar se vários símbolos foram definidos. Você também pode agrupar símbolos e operadores com parênteses.

Comentários

#if, juntamente com #else, #elif, #endif, #define, e políticas de #undef , permite que você inclua ou exclua o código com base na existência de um ou mais símbolos. Isso pode ser útil ao criar o código para uma construção de depuração ou o para criar uma configuração específica.

Um início da diretiva condicional com uma política de #if deve ser explicitamente terminado com uma política de #endif .

#define permite que você defina um símbolo, de forma que, usando o símbolo porque a expressão passada à política de #if , a expressão avaliará a true.

Você também pode definir um símbolo com a opção de compilador /define . você pode undefine um símbolo com #undef.

Um símbolo que você defina com /define ou com #define não está em conflito com uma variável com o mesmo nome. Isto é, um nome de variável não deve ser passado para uma diretiva pré-processamento e um símbolo só pode ser avaliado por uma diretiva pré-processamento.

O escopo de um símbolo é criado com #define no arquivo que foi definido.

Exemplo

// preprocessor_if.cs
#define DEBUG 
#define MYTEST
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !MYTEST)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
        Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
        Console.WriteLine("DEBUG and MYTEST are defined");
#else
        Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
    }
}
  

Consulte também

Referência

Diretivas de pré-processador em C#

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#