c# – Defines.Debug vs #if DEBUG

我已经开始使用像这样的定义类:
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
}

我看到的优点是:

>确保我不会打破#if ..#else ..#endif不会被编译器检查的东西.
>我可以找到参考,看看它在哪里使用.
>有一个bool调试通常是有用的,定义代码更长/更麻烦.

可能的劣势我看到:

如果“定义”类在另一个程序集中,编译器将无法优化未使用的代码.这是为什么我做了内部的.

我没有任何其他的缺点吗?

[编辑]典型用法示例:

private readonly Permissions _permissions = Defines.Debug ? Permissions.NewAllTrue()
                                                          : Permissions.NewAllFalse();

要么:

var str = string.Format(Defines.Debug ? "{0} {1} ({2})" : "{0} {1}",actual,text,advance);

解决方法

我看到至少有一个很大的缺点:如果Debug是false,这段代码会引发一个警告:
if (Debug)
    Console.WriteLine("Debug");

因为编译器会检测到该条件是永远不会满足的,所以Console.WriteLine调用是不可访问的.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...