#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"标头之前将其保留在代码的顶部。因此,编译器不知道ConsoleWriteLine()是什么。如果我把它放在这个下面,我会收到一个错误,告诉我我需要将预处理器放在顶部。

有人可以帮助我并告诉我如何解决这个问题。

#define C# 中的预处理器

没有预处理器宏这样的运气来缩写,但在 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