2012-03-11 72 views
0

是否有可能在预生成事件中运行C#函数并将函数调用替换为常量值?在Visual Studio 2010中预生成

例如:

class A{ 
    A(){ 
     var aVar = B.Func1("a"); 
    } 
} 
class B{ 
    static String Func1(String str){ 
     //Do some things 
     return str; 
    } 
} 

预建事件后:

class A{ 
    A(){ 
     var aVar = "A"; 
    } 
} 
class B{ 
    public static String Func1(String str){ 
     //Do some things 
     return str; 
    } 
} 

回答

2

这有什么好做 “预建事件”。这是编译期间编译器可能应用或可能不会应用的优化。

定位.NET Framework时,会增加一个额外的优化复杂度层。当您最初将代码编译为IL时,C#编译器不会执行许多可能的优化,而是在代码执行之前(当IL被编译为本机代码时)由JIT编译器执行。

是的,JIT编译器肯定会应用如此简单的优化,以尽可能内联函数调用。对于任何优化器来说,这都是一个低下的成果。 (虽然内联函数可以让事情变得更慢,并且优化器通常足够聪明以识别这种情况,但您应该始终相信优化器,而不是试图强制它执行您认为有意义的东西。它通常比你聪明。)

你的焦点应该是编写清晰易读的代码。不要担心如何优化它,直到您对它进行了配置并确定其速度太慢。

相关问题