2011-02-27 31 views
3

這是一個出於好奇的問題。我瞎搞一些代碼,並意識到以下仍然在編譯發佈:ConditionalAttribute on Main()

class Program 
{ 
    [Conditional("DEBUG")] 
    private static void Main() 
    { 
     // do stuff 
    } 
} 

我以爲ConditionalAttribute應該消滅的方法,但事實並非如此。入口點有什麼特別之處?

回答

9

我認爲它擦掉了調用的方法,而不是方法本身。 Main永遠不會(或永遠不會)從你的代碼中調用,所以這不會改變任何東西。

+1

正確。更確切地說,我認爲它是從'mscoree.dll'調用的? – 2011-02-27 06:36:53

+1

也許,但我不知道。它被稱爲「通過魔術」。 :) – Mehrdad 2011-02-27 06:42:35