我可以在C#中使用#define
#if
和#endif
内的#if !SILVERLIGHT && !__ANDROID__ && !__IOS__
#define SupportsMutex
#endif
preprocessor directive吗?
e.g。
#if !SILVERLIGHT && !__ANDROID__ && !__IOS__
它看起来很有效,但我需要确定。有很多关于此的文章,但大部分时间都是在C语境中而不是C# - C#中的预处理程序指令a更加有限。
Visual Studio的突出显示似乎支持它,但根据语言/编译器规范它真的有效吗?
This MSDN page给出了以下注释:
#define指令不能用于声明常量值,这通常在C和C ++中完成。 C#中的常量最好定义为类或结构的静态成员。如果你有几个这样的常量,可以考虑创建一个单独的“常量”类来保存它们。
我需要这个,因为多次使用SupportsMutex
很难管理。
当然,我们也可以将In [1]: a = '<'
In [2]: a
Out[2]: '\xef\xbb\xbf<'
添加到项目的“条件编译符号”中,但这更难以管理且更少透明。
答案 0 :(得分:5)
是。查看C# specification这个用法的一个特定示例在 2.5.3声明指令部分中给出,并视为有效:
#define Enterprise
#if Professional || Enterprise
#define Advanced
#endif
namespace Megacorp.Data
{
#if Advanced
class PivotTable {...}
#endif
}