【发布时间】:2012-01-04 00:53:02
【问题描述】:
C# 有没有 Conditional (!Conditional, NotConditional, Conditional(!)) 属性吗?
我知道 C# 有一个 Conditional attribute:
[Conditional("ShowDebugString")]
public static void ShowDebugString(string s)
{
...
}
相当于1到:
public static void ShowDebugString(string s)
{
#if ShowDebugString
...
#endif
}
但在这种情况下,我想要 inverse 行为(您必须专门选择退出):
public static void ShowDebugString(string s)
{
#if !RemoveSDS
...
#endif
}
这让我尝试:
[!Conditional("RemoveSDS")]
public static void ShowDebugString(string s)
{
...
}
无法编译。并且:
[Conditional("!RemoveSDS")]
public static void ShowDebugString(string s)
{
...
}
无法编译。并且:
[NotConditional("RemoveSDS")]
public static void ShowDebugString(string s)
{
...
}
无法编译,因为它只是一厢情愿。
1Not true, but true enough. Don't make me bring back the Nitpicker's Corner. ????
【问题讨论】:
-
不。请注意,
[Conditional(...)]不等同于此;它也会删除调用点。 -
@SLaks:我正在写一个包含这一点的答案:)
-
这似乎是一个有用的功能。在 GitHub 上打开了一个关于它的功能请求:github.com/dotnet/csharplang/issues/2742
标签: c# conditional-statements conditional-compilation