或C#中的Conditional属性中的运算符

Lan*_*eyo 47 c#

在C#中,我们可以根据构建类型区分代码执行.默认情况下,我们定义了Debug和Release类型.
我们可以使用#if指令来做到这一点:

#if DEBUG
    public void Foo()
    { ... }
#endif
Run Code Online (Sandbox Code Playgroud)

但我们也可以使用Conditional属性:

[Conditional("DEBUG")]
public void Foo()
{ ... }
Run Code Online (Sandbox Code Playgroud)

第二种解决方案甚至声称更易于维护(参见:Bill Wagner的有效C#).

我的问题是 - 如何在Conditional许多构建配置中使用该属性?有可能以某种方式使用or运算符吗?我问,因为我希望在例如DEBUG和BAR构建配置中执行一些Foo方法.然后怎样呢?

And*_*yev 53

您可以使用多个逗号分隔的条件属性,例如

[Conditional("DEBUG"), Conditional("BAR")]
Run Code Online (Sandbox Code Playgroud)

它将完全符合您的期望行为 - 它们将在逻辑上与ORed组合在一起.

请参阅MSDN以供参考.

  • 请注意,[MSDN 参考](https://msdn.microsoft.com/en-us/library/z371wyft.aspx#Conditional) 还回答了下一个明显的问题:您如何与“条件”? (2认同)