使用Conditional特性代替 if條件編譯

2021-06-01 19:27:00 字數 549 閱讀 6870

1原因

#if/#else條件編譯常用來由同乙份源**生成不同的結果檔案,最常見的有 debug版和release版。但是這些工具在具體的應用中並不是非常得心應手,因為它們它容易被濫用了,使用它們建立的**通常都比較難理解,且難以除錯。

2解決方法

c#為此提出了一種更好的選擇:conditional特性。使用conditional特性可以將函式隔離出來,使得它們只有在定義了某些環境變數後才能發揮作用。如下:

[ conditional ( "debug" ) ]

private void checkstate( )

應用了conditional特性之後,c#編譯器只有在檢測到debug環境變數時,才會產生對checkstate方法的呼叫。conditional特性不會影響checkstate()方法的編譯,它只會影響對該方法的呼叫。

3總結使用conditional特性比使用#if/#else產生的il**更有效率。同時,將其限制在函式層次上可以清晰地將條件性的**分離出來,從而使我們的**具有更好的結構。

Conditional註解使用

conditional spring4.0 介紹了乙個新的註解 conditional,它的邏輯語義可以作為 if then else 來對bean的註冊起作用。source code recreated from a class file by intellij idea powered by f...

Conditional載入探索

spring boot 或者spring將所有持有模式註解的類元資料,掃瞄到容器中,然後通過條件註解 conditionalonbean篩選可用的bean,去除不合條件的bean 刪除定義 此時會出現如下結果 1.先載入 loadbeandefinitions testlifecomponent 然...

條件註解 Conditional

可以讓某乙個bean 在某些條件下 加入ioc容器,其他情況下不加ioc容器。a.準備普通bean b.增加條件bean 給每個bean設定條件,必須實現condition介面 如 oilcarcondition類 public class oilcarcondition implements co...