C# Visual Studio 2010中的预构建

C# Visual Studio 2010中的预构建,c#,visual-studio,visual-studio-2010,pre-build-event,C#,Visual Studio,Visual Studio 2010,Pre Build Event,是否有可能在预构建事件中运行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"; }

是否有可能在预构建事件中运行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;
    }
}

这与“预构建事件”无关。这是编译器在编译过程中可能应用或不应用的优化

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

是的,JIT编译器肯定会尽可能地应用诸如内联函数调用之类的琐碎优化。这对于任何优化器来说都是一个低挂果实。(尽管在某些情况下,内联函数可能会使事情变得更慢,而优化器通常足够聪明来认识到这一点。您应该始终信任优化器,而不是强迫它做您认为有意义的事情。它通常比您更聪明。)

您的重点应该是编写清晰、易于阅读/维护的代码。在您分析它并确定它太慢之前,不要担心如何优化它