在C#中有没有更快的方法来
#if foo
Something();
#endif
类似伪代码:
#if(foo, DoThat(); )
我是一名程序员,而程序员往往比较懒惰 ;-)
在C#中有没有更快的方法来
#if foo
Something();
#endif
类似伪代码:
#if(foo, DoThat(); )
我是一名程序员,而程序员往往比较懒惰 ;-)
没有任何东西可以让你在一行中编写 #if ... #endif
。
如果只有在定义了 FOO
的情况下才应该调用 Something
,则可以使用 ConditionalAttribute
进行修饰:
[Conditional("FOO")]
public void Something()
{
...
}
如果您这样做,编译器将删除所有对Something
的调用,除非定义了FOO
。
尽量将所有的#if
都放在一个地方,而不是散布在代码中。这不仅可以更容易地看出应用程序的行为如何随条件编译符号的定义而改变,还可以从大部分代码中去除#if
噪音。
针对不同的目标(例如Thing.Foo.cs
和Thing.cs
),在您的csproj文件中指定哪个版本应该被包含,这也可能是有意义的。
最后,请记住,代码的目的是为了被阅读和理解:专注于编写清晰易懂的代码,而不是花费最短时间编写的代码。长期来看,你会花更长的时间阅读自己的代码。
[Conditional("FOO")]
会更有意义?这样你就可以随意调用它们,而不需要任何#ifs
,如果必要,编译器会将它们删除。例如,你的调试内容可能包括对Debug.Assert
的调用,该方法被装饰为[Conditional("DEBUG")]
。 - canton7