C#使用ConditionalAttribute特性来实现代码调试

条件编译:

public void Func()
{
#if DEBUG
    string msg = null;
    msg = GetDiagnostics();
    Console.WriteLine(msg);
#endif
}

但条件编译可能被滥用且可读性比较差,比如:

public void Func()
{
string msg = null;
#if DEBUG
    msg = GetDiagnostics();
#endif
Console.WriteLine(msg);
}

使用Conditional修饰符的话:

接口源码:
using System.Runtime.InteropServices;

namespace System.Diagnostics
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
    [ComVisible(true)]
    public sealed class ConditionalAttribute : Attribute
    {
        public ConditionalAttribute(string conditionString);

        public string ConditionString { get; }
    }
}
[Conditional("DEBUG")]
private void Func()
{
    string msg = null;
    msg = GetDiagnostics();
    Console.WriteLine(msg);
}

仅在DEBUG下,运行Func函数,其他环境下则不运行,简洁易懂,容易调试。

你可能感兴趣的:(C#使用ConditionalAttribute特性来实现代码调试)