c# – #define指令目的
在C#中#define指令的目的和用法是什么?
关于这个主题的问题已经很少,但我没有答案.他们只举例说明它的工作原理.但我需要更深入的解释:它为什么存在以及使用它的好方法(如果有的话). 基本上我知道如何使用它,但对我来说,用法看起来很奇怪.我们来看看例子: #define DEV #if DEV Console.WriteLine("Development trace log message"); #endif 对我来说,这与使用#if条件构建与项目定义的条件编译符号完全不同.如果我们使用项目定义的符号,它将附加到项目构建配置,我们可以使用构建配置来管理构建(并从构建中排除)所需的代码.所以代码 #if DEBUG Console.WriteLine("Debug log message"); #endif 对我来说没问题.但正如我所说,它与使用#define指令完全不同,因为它是可管理的. 我可以想象在#if语句中使用#define / #undef.就像是 #if DEBUG #if CLIENT1 #define TEST_CLIENT1 #endif #endif #if TEST_CLIENT1 connectionString = "Some specific test connection" //I know this is bad practice even in conditional. Only for example purpose. #elif //Read connection from config #endif #if UNITTESTS #undef TEST_CLIENT1 #endif #if TEST_CLIENT1 Console.WriteLine("Some message"); #endif 很抱歉这么复杂的例子,但这至少是我觉得有用的东西.虽然我不会以任何方式编写这样的代码=). PS:我自己从未使用#define 5年并且没有意愿去做,但我得到了一个支持项目,它有很多奇怪的定义,甚至以奇怪的方式命名.这些定义通常放在文件的顶部,就像我在这里的第一个例子.我不知道如何维护这段代码. 解决方法
我没有看到任何有效的理由,除非没有它,#IF语句将不存在.
当您使用编译器上的/ define指令定义项目级别前置条件变量时,它真正做的是在代码中添加#DEFINE. 我认为这使得它易于管理,但不能使用/ define语句在代码中手动设置它. 另一个用处是可读性和范围.项目定义的语句适用于项目,#DEFINE级别语句仅适用于一个文件.这有助于保持组织,可读和停止变量问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |