English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# базовый учебник

C# продвинутый учебник

C#面向对象(OOP)

Инструкции предprocessor в C#

Инструкции предобработки направляют компилятор на предварительную обработку информации до начала реального компиляции.

Все инструкции предобработки начинаются с #. И на строке, перед инструкцией предобработки могут появляться только пробельные символы. Инструкции предобработки не являются инструкциями, поэтому они не заканчиваются точкой с запятой (;).

Компилятор C# не имеет отдельного предобработчика, но инструкции обрабатываются так, как будто есть отдельный предобработчик. В C#, инструкции предобработки используются для условной компиляции. В отличие от C и C++, они не используются для создания макросов. Инструкция предобработки должна быть единственной инструкцией на строке.

Список инструкций предобработки C#

В таблице приведены инструкции предобработки, доступные в C#:

Инструкции предобработкиОписание
#defineИспользуется для определения набора символов, который становится символом.
#undefИспользуется для аннулирования определения символа.
#ifИспользуется для проверки, является ли символ истинным.
#elseИспользуется для создания сложных условных инструкций, совместно с #if.
#elifИспользуется для создания сложных условных инструкций.
#endifУказание конца условного指令а.
#lineЭто позволяет вам изменить номер строки компилятора и (по желанию) имя файла, в котором выводятся ошибки и предупреждения.
#errorЭто позволяет генерировать ошибку из указанного места в коде.
#warningОн позволяет генерировать первый уровень предупреждений из указанного места в коде.
#regionОн позволяет specify кодовый блок, который можно разворачивать или сворачивать, когда вы используете функцию оглавления редактора Visual Studio Code.
#endregionОн обозначает конец блока #region.

#define предобработчик

#define создают символы констант предобработчика.

#define позволяет определить символ, так что, используя символ в качестве выражения, переданного команде #if, выражение вернет true. Его синтаксис следующий:

#define symbol

Ниже приведен пример:

#define PI 
using System;
namespace PreprocessorDAppl
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

Когда上面的 код будет компилироваться и выполняться, он произведет следующие результаты:

PI is defined

Условные команды

Вы можете использовать команду #if для создания условной команды. Условные команды используются для проверки, является ли символ правдой. Если да, компилятор выполнит код между #if и следующей командой.

Синтаксис условных команд:

#if symbol [оператор symbol]...

其中,символ Это имя символа, который нужно проверить. Вы также можете использовать true и false, или поместить否定ный оператор перед символом.

Часто используемые операторы:

  • == (равно)

  • != (не равно)

  • && (и)

  • || (или)

Вы также можете использовать скобки для группировки символов и операторов. Условные команды используются для компиляции кода при отладке версии или компиляции指定的 конфигурации. Одна из #if Условные команды начинаются с явно указанного #endif Конец команды.

Ниже приведен пример использования условий команд:

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG и VC_V10 определены");
      #else
         Console.WriteLine("DEBUG и VC_V10 не определены");
      #endif
      Console.ReadKey();
   }
}

Когда上面的 код будет компилироваться и выполняться, он произведет следующие результаты:

DEBUG и VC_V10 определены