C#优化重载方法是否在级联中调用?
我有一些这样的代码:C#优化重载方法是否在级联中调用?,c#,optimization,overloading,C#,Optimization,Overloading,我有一些这样的代码: class MainApplication { protected static string _since; protected static void updateSince() { MainApplication.updateSince(DateTime.Now); } public static void updateSince(DateTime since) { MainAppl
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是否以及如何优化这种级联调用?不,C根本没有优化东西。您要问的是,编译器是否对此进行了优化…编译器不会对此进行“优化”。您可以在查看生成的IL代码时验证这一点。不,C#根本不会优化内容。您要问的是,编译器是否对此进行了优化…
编译器不会对此进行“优化”。您可以在查看生成的IL代码时验证这一点。您考虑了哪种优化?为什么你认为会有任何优化?这只是重载了相互调用的方法。你想做什么样的优化?为什么你认为会有任何优化?它只是重载了相互调用的方法。+1-我的意思是,编译器会优化什么?将
updateSince()
作为字符串调用到带有now的重载中的行为?是的,我想OP会询问编译器是否进行某种内联。使用ILSpy()表明不同的方法都是单独调用的。很抱歉,我的精度不够;)。这正是我要问的。我想他是在问JIT是否会优化这里的某些东西(但不确定这里应该是什么“东西”)。毕竟C#编译器(实际上我只确定javac,但我假设它是类似的)最多不做/只做简单的优化。+1-我的意思是,编译器会优化什么?将updateSince()
作为字符串调用到带有now的重载中的行为?是的,我想OP会询问编译器是否进行某种内联。使用ILSpy()表明不同的方法都是单独调用的。很抱歉,我的精度不够;)。这正是我要问的。我想他是在问JIT是否会优化这里的某些东西(但不确定这里应该是什么“东西”)。毕竟C#编译器(实际上我只确定javac,但我认为它是类似的)最多只做简单的优化。