# if (C# referência)
Quando o compilador C# encontra um #if seguido de diretiva, eventualmente por um # endif diretiva, ele irá compilar o código entre as diretivas somente se o símbolo especificado é definido. Ao contrário de c e C++, você não pode atribuir um valor numérico em um símbolo; a instrução # if C# é booleano e apenas testa 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) somente para testar a true ou false . True significa que o símbolo é definido. A instrução #if DEBUG tem o mesmo significado que #if (DEBUG == true). Os operadores de & & (e), e | (ou) pode ser usado para avaliar se foram definidos vários símbolos. Você também pode agrupar os símbolos e operadores de parênteses.
Comentários
#if, juntamente com o # else, # elif, # endif, # define, e #undef diretivas, permite que você incluir ou excluir o código com base na existência de um ou mais símbolos. Isso pode ser útil quando a compilação de código para uma compilação de depuração ou compilação de uma configuração específica.
Uma diretiva condicional que começa com um #if diretiva explicitamente deve ser finalizada com um #endif diretiva.
#definepermite que você defina um símbolo, de modo que, usando o símbolo, como a expressão passada para o #if diretiva, a expressão será avaliada como true.
Você também pode definir um símbolo com o /define opção de compilador. Você pode remover-um símbolo com #undef.
Um símbolo que você definir com /define ou com #define não está em conflito com uma variável de mesmo nome. Ou seja, um nome de variável não deve ser passado para uma diretiva de pré-processamento e um símbolo só pode ser avaliado por uma diretiva de pré-processamento.
O escopo de um símbolo criado com #define é o arquivo no qual ele 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
}
}