0

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

1 回答 1

2

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

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

是的,JIT 编译器肯定会尽可能地应用诸如内联函数调用这样的微不足道的优化。对于任何优化器来说,这都是唾手可得的成果。(尽管在某些情况下内联函数会使事情变慢,而优化器通常足够聪明,可以识别这一点。你应该始终相信优化器,而不是试图强迫它做认为有意义的事情。它通常比你。)

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

于 2012-03-11T05:58:09.180 回答