#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
Koncepcje
Przewodnik programowania w języku C#