條件編譯:
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下,運(yùn)行Func函數(shù)减余,其他環(huán)境下則不運(yùn)行综苔,簡(jiǎn)潔易懂,容易調(diào)試。