未知常量SCALABILITYTESTING
我在Web服务中有一些奇怪的代码。未知常量SCALABILITYTESTING
#if SCALABILITYTESTING
Random r = new Random();
#endif
我在Google上做过几次搜索,但没有发现任何用处。该Web服务是用C#编写的。它所在的项目有微软单元测试。
很显然,这是说如果这个变量是真的,然后创建一个新的随机数,我的猜测是,当我运行微软单元测试,然后触发。
我以前没见过这样的东西,所以我想知道它是什么。
我唯一的线索是下面的一段代码,它位于页面的最顶端。
//#define SCALABILITYTESTING
#define SOAPSECURITY
#define SOFTWAREFEATURES
Visual Studio亮点#define
。
我不知道下面的stackoverflow问题是相关的,我的猜测是,这是类似于DEBUG和TRACE常量。
Define new compile-time constant in C# (for #if)
编辑 我发现它似乎与这些链接。
http://msdn.microsoft.com/en-us/library/yt3yck0x.aspx
http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
的问题是相关的,它类似于调试和跟踪。这是一个条件编译符号。这些可以在项目属性中定义,或直接在#define
的代码中定义。
我假设开发人员定义了它,以改变他的测试或代码本身的工作方式,以模拟多个用户同时访问Web服务 - 或类似的。
谢谢你。您的意见与服务的使用方式以及我认为开发人员推理的内容相符。 – 2011-06-10 11:41:11
这些是有条件编制符号并在C# Language Specification的第9.5节中定义。正如名称所暗示的,如果某些编译符号已定义或未定义,它允许您省略编译某些代码段。
从规格:
甲条件编译符号具有 两种可能的状态:定义或 未定义。在源文件的 词汇处理的开始,一个 条件编译符号是 未定义除非它已经 由外部 机构(诸如命令行 编译选项)明确定义。当处理#define 指令时,该指令中名为 的 条件编译符号在 中定义为源文件。该符号仍然定义为 ,直到处理相同符号的#undef指令 或 ,直到源文件的末尾达到 。暗示这是 , 程序中的#define和#undef指令在 中一个源文件对 中的其他源文件没有影响。
有条件 编译符号的名称空间是不同的,并从所有其他命名实体 在C#程序 分开。有条件的 汇编符号只能在#define和#undef 指令和预处理 表达式中引用的 。
感谢您的链接。 – 2011-06-10 11:45:50
“如果下面的stackoverflow问题是相关的。” - 是的。您可以在属性(对于所有项目)中的条件编译符号字段中指定符号或在代码中用#define指定符号。 – Reniuz 2011-06-10 11:46:59