C# - 使用 Conditional 取代 if

Posted on 2015-05-16

一般來說如果是 debug 跟 release 要呼叫或是處理的程式不同的時候,都會使用 #if#endif 把只有 debug 時需要執行的程式包在裡面,不過其實這樣子的可讀性會比較不好

這個時候就可以使用 Conditional 這個 Attribute (namespace 為 System.Diagnostics), 把 Debug 才需要執行的 Method 或是 class 上面套上這個 Attribute

下面來看實際的程式碼

使用 #if 時:

class Program
{
    static void Main(string[] args)
    {
#if DEBUG
        GetValues();
#endif
        Console.ReadLine();
    }

    public static void GetValues()
    {
        Console.WriteLine("123");
    }
}

使用 Conditional 時:

class Program
{
    static void Main(string[] args)
    {
        GetValues();
        Console.ReadLine();
    }

    [Conditional("DEBUG")]
    public static void GetValues()
    {
        Console.WriteLine("123");
    }
}

不過,Conditional 也不是沒有缺點

  • 就算是 Release mode 時,有加上 Conditional 也是會出現在編譯後的 dll
  • 只能套用在 class 和 void method 上面 (MSDN 裡面有寫)

大概說明了一下 Conditional 這個 Attribute,如果需要比較了解詳細的用法,請看參考連結

參考連結