C# 预处理器指令学习笔记
概述
预处理器指令是指在编译阶段处理源代码之前,先由预处理器进行处理的指令。这些指令通常以 # 开头,常用于定义常量、条件编译和引用程序集等。
常用预处理器指令
#define
#define
指令用于定义一个常量。当编译器遇到后续代码中使用该常量的地方,会直接将其替换为定义的值。
csharpCopy Code#define DEBUG
#if DEBUG
Console.WriteLine("调试模式");
#endif
#if, #else, #elif, #endif
#if
指令可以根据条件编译判断代码块是否需要编译。 #else
和 #elif
用于在条件不满足时执行的操作。 #endif
用于结束条件编译代码块。
csharpCopy Code#define DEBUG
#if DEBUG
Console.WriteLine("调试模式");
#else
Console.WriteLine("发布模式");
#endif
#warning, #error
#warning
指令用于发出警告消息,#error
指令用于发出错误消息。
csharpCopy Code#warning 这是警告信息
#error 这是错误信息
#region, #endregion
#region
和 #endregion
用于分组代码片段,方便代码的折叠和展开。
csharpCopy Code#region 常量定义
public const int MaxValue = 100;
public const int MinValue = 0;
#endregion
#nullable enable, #nullable disable
#nullable enable
和 #nullable disable
用于启用或禁用 C# 8.0 引入的可空引用类型特性。
csharpCopy Code#nullable enable
string? str1 = null;
string str2 = "hello";
Console.WriteLine(str1.Length); // 编译错误
Console.WriteLine(str2.Length); // 正确
#nullable disable
实例
csharpCopy Code#define DEBUG
using System;
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("调试模式");
#else
Console.WriteLine("发布模式");
#endif
#warning 这是警告信息
#region 常量定义
public const int MaxValue = 100;
public const int MinValue = 0;
#endregion
#nullable enable
string? str1 = null;
string str2 = "hello";
Console.WriteLine(str1.Length); // 编译错误
Console.WriteLine(str2.Length); // 正确
#nullable disable
}
}