2011-05-25 48 views
0

我有這樣的一些代碼:C#優化級聯中調用的重載方法嗎?

class MainApplication { 

    protected static string _since; 

    protected static void updateSince() 
    { 
     MainApplication.updateSince(DateTime.Now); 
    } 

    public static void updateSince(DateTime since) 
    { 
     MainApplication.updateSince(since.ToString("yyyy-MM-dd HH:mm:ss")); 
    } 

    public static void updateSince(string since) 
    { 
     // finally, doing something real 
     MainApplication._since = since; 
    } 

    /* ... */ 

} 

我不知道是否和如何C#這樣的優化梯級電話嗎?

+0

你在想什麼樣的優化?你爲什麼認爲會有優化?它只是重載的方法互相調用。 – 2011-05-25 14:39:46

回答

4

不,C#根本不會優化內容。你問的是,編譯器是否優化了這個...
編譯器不會「優化」這個。您可以在查看生成的IL代碼時驗證這一點。

+0

+1 - 我的意思是,編譯器會優化什麼?現在調用'updateSince()'作爲字符串的行爲? – Tejs 2011-05-25 14:42:11

+0

是的,我想OP會問,編譯器是否做了某種內聯。 – 2011-05-25 14:43:11

+1

使用ILSpy(http://wiki.sharpdevelop.net/ilspy.ashx)顯示不同的方法都是分開調用的。 – 2011-05-25 14:43:45