Udostępnij za pośrednictwem


#if (odwołanie w C#)

Kiedy napotyka kompilatora C# #if dyrektywy, a następnie ostatecznie przez #endif w dyrektywie, to będzie skompilować kod między dyrektywami tylko wtedy, gdy określony symbol jest zdefiniowany.W przeciwieństwie do C i C++ nie można przypisać wartość liczbową symbol; instrukcja #if w C# jest logiczną i sprawdza tylko, czy symbol został zdefiniowany lub nie.Na przykład:

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

Można używać operatorów == (równości), ! = (nierówności), tylko do testowania true lub false .Wartość TRUE oznacza, że symbol jest zdefiniowany.Instrukcja #if DEBUG ma takie samo znaczenie jak #if (DEBUG == true).Można używać operatorów & & (i), | (or), and ! (nie), aby ocenić, czy zdefiniowano wiele symboli.Można również grupować symboli i operatorów z nawiasami.

Uwagi

#if, wraz z #else, #elif, #endif, #define, i #undef dyrektyw, pozwala uwzględnić lub wykluczyć kod na podstawie istnienia jednego lub więcej symboli.Może to być przydatne podczas kompilowania kodu budowania debug lub podczas kompilacji dla określonej konfiguracji.

Od początku w dyrektywie z #if dyrektywy musi być jawnie zakończony z #endif dyrektywy.

#definepozwala zdefiniować symbol, taki, że przy użyciu symbolu jako wyrażenie przekazywane do #if w dyrektywie, wyrażenie będzie być true.

Można również zdefiniować symbol z / define opcję kompilatora.Użytkownik może nie zdefiniowany symbol z #undef.

Symbol, który zdefiniujesz z /define lub #define nie jest sprzeczna ze zmienną o tej samej nazwie.Oznacza to, że nazwa zmiennej nie powinny być przekazywane do dyrektywy preprocesora i symbol może być sprawdzane tylko przez dyrektywy preprocesora.

Zakres symbolu utworzonego z #define jest plik, w którym został zdefiniowany.

Przykład

// 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
    }
}
  

Zobacz też

Informacje

Dyrektywy preprocesora C#

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#