gpt4 book ai didi

.net - ToString() 是否被编译器优化?

转载 作者:行者123 更新时间:2023-12-02 00:39:54 26 4
gpt4 key购买 nike

假设我有以下代码:

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 实例字符串 [mscorlib]System.Object::ToString()

不知道JIT有没有优化这个。

最佳答案

不对,恰恰相反。这:

Console.WriteLine("Value1: " + SomeEnum.Value1 + "\r\nValue2: " +
SomeOtherEnum.Value2);

由编译器翻译成(相当于)这个:

string s = String.Concat("Value1: ", SomeEnum.Value1.ToString(), "\r\n Value2: ", SomeOtherEnum.Value2.ToString());
Console.WriteLine(s);

在这两种情况下,都会生成相同的 IL。如果您问 JIT 是否将其转换为:

string s = String.Concat("Value1: ", "Value1", "\r\n Value2: ", "Value2");
Console.WriteLine(s);

那么答案是否定的。虽然我想知道为什么这对您来说是个问题?

关于.net - ToString() 是否被编译器优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com