在Visual Studio 2010中预构建

时间:2012-03-11 04:21:58

标签: c# visual-studio visual-studio-2010 pre-build-event

是否有可能在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;
    }
}

1 个答案:

答案 0 :(得分:2)

这与“预构建事件”无关。这是编译期间编译器可能会或可能不会应用的优化。

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

是的,JIT编译器肯定会尽可能地应用这样的简单优化来内联函数调用。对于任何优化器来说,这都是低调的结果。 (虽然有些情况下内联函数可以使事情更慢,并且优化器通常足够智能来识别它。你应该始终信任优化器,而不是试图强迫它做 >你认为有意义。它通常比你聪明。)

您应该专注于编写清晰易读/维护的代码。不要担心如何优化它,直到你分析它并确定它太慢。