我已经开始像这样使用定义类了:
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 值通常很有用,定义代码更长/更困惑。
我看到的可能的缺点:
如果 Defines 类在另一个程序集中,编译器无法优化未使用的代码。这就是我制作内部的原因。
我是否遗漏了任何其他缺点?
[编辑] 典型用法示例:
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
调用无法访问。
关于c# - Defines.Debug 与 #if DEBUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518696/