【发布时间】:2010-04-23 00:02:34
【问题描述】:
是否可以在 C# 中设置这样一个条件,如果条件为真 - 编译一个文件;如果条件为假 - 编译另一个文件?
有点像
#ifdef DEBUG
#include Class1.cs
#else
#include Class2.cs
#endif
或者可能在项目属性中设置它。
【问题讨论】:
标签: c# c-preprocessor
是否可以在 C# 中设置这样一个条件,如果条件为真 - 编译一个文件;如果条件为假 - 编译另一个文件?
有点像
#ifdef DEBUG
#include Class1.cs
#else
#include Class2.cs
#endif
或者可能在项目属性中设置它。
【问题讨论】:
标签: c# c-preprocessor
【讨论】:
我不会推荐它。我不喜欢 Debug 和 Release 的代码如此不同的想法,以至于您需要拥有两个完全独立的文件才能理解这些差异。 #if DEBUG 在所有是一个相当大的代码味道 IMO...
但是,您可以这样做:
// Class1.cs
#if DEBUG
...
#endif
.
// Class2.cs
#if !DEBUG
...
#endif
【讨论】:
在 C# 中,我们不使用文件的包含,但您可以使用条件方法。
例如,如果我正在开发一个游戏并且我正在为我的输入类使用共享代码库,但如果我在 Xbox 上,我希望调用一个方法,并使用不同的方法获取如果我在Zune 上调用。它仍然会返回相同类别的输入数据,但会采用非常不同的路径来获取它。
您可以在此处了解有关条件方法的更多信息: http://msdn.microsoft.com/en-us/library/aa288458(v=VS.71).aspx
【讨论】:
谢天谢地,不是在这样的预处理器中。但是,您可以在文件本身中排除整个文件的实现。或者,您可以使用 MSBuild 或 NAnt 设置构建过程来切换我们的文件。
【讨论】: