#define C# 中的预处理器
本文关键字:预处理 处理器 #define | 更新日期: 2023-09-27 18:35:21
我来自一个C++背景,试图学习C#。
我觉得这真的很烦人,每次我想将某些内容打印到控制台时,我都必须键入类似 Console.WriteLine("whatever");
如果我使用 C++我只会用 #define
定义类似 print(x)
的东西,但在 C# 中我无法让它工作。
我的代码是这样的:
#define print(x) Console.WriteLine(x);
问题是C#希望我在包含" using system
"标头之前将其保留在代码的顶部。因此,编译器不知道Console
或WriteLine()
是什么。如果我把它放在这个下面,我会收到一个错误,告诉我我需要将预处理器放在顶部。
有人可以帮助我并告诉我如何解决这个问题。
没有预处理器宏这样的运气来缩写,但在 C#6 中,您可以使用 static 使调用稍微不那么冗长;
using static System.Console;
namespace TestConsole
{
class MainClass
{
public static void Main (string[] args)
{
WriteLine ("Test"); // Uses Console.WriteLine
}
}
}
。当然,您可以使用它来获取打印功能;
using static Utility;
static class Utility {
public static void print(string format, params object[] parms) {
System.Console.WriteLine (format, parms);
}
}
namespace TestConsole
{
class MainClass
{
public static void Main (string[] args)
{
print ("Test {0}", "this");
}
}
}
C# 中的#define
仅用于定义符号,可以在#if
指令中使用。
从 MSDN:
#define 指令不能用于声明常量值,就像在 C 和 C++ 中通常所做的那样。C# 中的常量最好定义为类或结构的静态成员。如果有多个这样的常量,请考虑创建一个单独的"常量"类来保存它们。
符号可用于指定编译条件。您可以使用 #if 或 #elif 测试符号。还可以使用条件属性执行条件编译。
可以定义符号,但不能为符号赋值。在使用任何不是预处理器指令的指令之前,#define 指令必须出现在文件中。
您可以使用以下代码段:
键入 cw 并按 TAB + TAB