是否有可能在Pre-build事件中运行C#函数并将函数调用替换为常量值?
例如:
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;
}
}
答案 0 :(得分:2)
这与“预构建事件”无关。这是编译期间编译器可能会或可能不会应用的优化。
在定位.NET Framework时,您会添加额外的优化复杂层。当您最初将代码编译为IL时,C#编译器不会执行许多可能的优化,而是在代码执行之前(当IL编译为本机代码时)由JIT编译器执行。
是的,JIT编译器肯定会尽可能地应用这样的简单优化来内联函数调用。对于任何优化器来说,这都是低调的结果。 (虽然有些情况下内联函数可以使事情更慢,并且优化器通常足够智能来识别它。你应该始终信任优化器,而不是试图强迫它做 >你认为有意义。它通常比你聪明。)
您应该专注于编写清晰易读/维护的代码。不要担心如何优化它,直到你分析它并确定它太慢。