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函数,其他环境下则不运行,简洁易懂,容易调试。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容