我已经开始使用这样的定义类:
internal sealed class Defines
{
/// <summary>
/// This constant is set to true iff the define DEBUG is set.
/// </summary>
public const bool Debug =
#if DEBUG
true;
#else
false;
#endif
}
Run Code Online (Sandbox Code Playgroud)
我看到的优点是:
我看到可能的缺点:
如果Defines类在另一个程序集中,则编译器无法优化未使用的代码.这就是我做内部的原因.
我错过了任何其他缺点吗?
[编辑]典型的用法示例:
private readonly Permissions _permissions = Defines.Debug ? Permissions.NewAllTrue()
: Permissions.NewAllFalse();
Run Code Online (Sandbox Code Playgroud)
要么:
var str = string.Format(Defines.Debug ? "{0} {1} ({2})" : "{0} {1}", actual, text, advance);
Run Code Online (Sandbox Code Playgroud)
我发现至少有一个很大的缺点:如果Debug是false,这段代码会引发警告:
if (Debug)
Console.WriteLine("Debug");
Run Code Online (Sandbox Code Playgroud)
因为编译器将检测到从未满足条件,所以Console.WriteLine调用无法访问.
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |