【发布时间】:2010-05-31 04:28:11
【问题描述】:
假设我有以下代码:
Console.WriteLine("Value1: " + SomeEnum.Value1.ToString() + "\r\nValue2: " +
SomeOtherEnum.Value2.ToString());
编译器会将其优化为:
Console.WriteLine("Value1: " + SomeEnum.Value1 + "\r\nValue2: " +
SomeOtherEnum.Value2);
我已经用 IL Disassembler 检查了它,并且有调用
IL_005a: callvirt instance string [mscorlib]System.Object::ToString()
我不知道 JIT 是否对此进行了优化。
【问题讨论】:
-
已经很晚了,我可能会遗漏一些东西,但这是如何优化的?
-
@Jon Seigel 我避免写
ToString(),因为我可以避免它只是为了减少打字,但一位朋友说这是不必要的开销,所以我在这里询问以消除任何疑问。 -
当
Value1是字符串类型时,JIT 编译器可以优化对ToString的调用。 -
问这个问题真是太愚蠢了。是的,你是对的@Steven 我实际上想知道
ToString()被字符串调用。哦,我的知识太臃肿了咩咩哈哈 -
真正的优化发生在运行时,因为此类调用很有可能被内联。
标签: .net tostring compiler-optimization