所以程序运行的时候不会执行Console.Write("debug.")这个语句

时间:2022-01-26 02:22:57

C#预措置惩罚惩罚器指令是在编译时挪用的。 预措置惩罚惩罚器指令(preprocessor directive)报告C#编译器要编译哪些代码,并指出如何措置惩罚惩罚特定的错误和警告。 C#预措置惩罚惩罚器指令还可以报告C#编纂器有关代码组织的信息。 1. 界说标记和打消标记界说的预措置惩罚惩罚指令#define 和 #undef 预措置惩罚惩罚指令都以#号开头并位于行首,前面可以呈现空格符。 #define DEBUG #define ISSAY 上面的语句界说了一个预编译的标记,他的感化域是他所处的整个文件,,界说标记的语句必需呈此刻所有代码之前, 否则编译的时候会呈现一个异常: 不能在文件的第一个符号之后,界说或打消界说预措置惩罚惩罚器标记 。我们也可以使用#undef来打消一个标记的界说,先来看个例子。 复制代码 #define DEBUG #undef DEBUG #define ISSAY using System; namespace JustDoIt { class Program { static void Main(string[] args) { #if DEBUG Console.Write("debug."); #endif #if ISSAY Console.Write("hello."); #else Console.Write("you can say nothing."); #endif Console.ReadLine(); } } } //输出:hello 复制代码 从上面的代码我们可以看到第一行界说了一个标记DEBUG,紧接着第二行打消了这个标记的界说,也就是相当于没有界说一样,所以措施运行的时候不会执行Console.Write("debug.")这个语句。第三行界说了ISSAY标记,所以措施输出了“hello”,如果我们把他注释了或者是删除了,那么措施会输出“you can say nothing“。我们可以初阶看到通过界说预编译的标记,可以控制编译器选择性地编译代码。上面的代码中还有#if和#endif这样的标记,这些是条件编译指令。 2. 条件编译指令 条件编译指令有4个,除了我们从第一个示例看到的#if、#else、#endif之外,还有一个#elif。我们对这些指令应该有是曾相识的觉得,他们跟我们平时编写代码的时候试用的条件语句是一样的,条件语句是用来控制措施流的,而这些条件编译指令是用来控制编译器选择性地编译代码的。 一条#if语句可以有0条或多条#elif语句,也可以有0条或一条#else 语句,但必需包孕一条#endif语句必需有,否则会呈现语法错误。 3. #region和#endregion 这两个标记平时我们必定用的很多了,就是把一些相关的代码折叠到一起,这样对我们在一个文件中编写较长的代码非常有用,我们可以把一组相关的代码用#region和#endregion组织在一起并且可以在#region后面加上说明的文字,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。 MSDN上的 C# 预措置惩罚惩罚器指令 介绍 Visual Studio 2013 MSDN 本节包罗有关以下 C# 预措置惩罚惩罚器指令的信息。 #if #else #elif #endif # define #undef #warning #error #line #region #endregion #pragma #pragma warning #pragma checksum 请参见各个主题有关更多信息和示例。 虽然编译器没有单独的预措置惩罚惩罚器,本节中介绍的措置惩罚惩罚指令,就象一个。 它们在条件编译用于辅佐。 与 C 和 C++ 指令差别,不能使用这些指令创建宏。 预措置惩罚惩罚器指令必需是行上的独一指令。 好文要顶 存眷我