2011-05-25 49 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