2011-02-27 2 views
3

Ceci est une question de curiosité. Je suis de déconner avec un code, et rendu compte que ce qui suit compile encore en version:ConditionalAttribute on Main()

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

Je pensais que ConditionalAttribute était censé effacer la méthode, mais il ne fonctionne pas. Quelle est la particularité du point d'entrée?

Répondre

9

Je crois qu'il efface les appels à la méthode, pas la méthode elle-même. Main n'est jamais (ou ne devrait jamais être) appelé à partir de votre code, donc cela ne changera rien.

+1

Correct. Plus précisément, je pense que ça s'appelle 'mscoree.dll'? –

+1

Probablement, mais je ne sais pas vraiment. C'est ce qu'on appelle "par magie". :) – Mehrdad