gpt4 book ai didi

c# - 如果将字符串引用设置为引号中的字符串,编译器是否会创建额外的字符串?

转载 作者:行者123 更新时间:2023-11-30 19:37:34 25 4
gpt4 key购买 nike

通常我不会在这里问这个问题,但我似乎没有找到任何关于在这种情况下会发生什么的文章。举个例子:

string s = "Potato";
string t = "Carrot, " + s + ", Bean";

在第二行中,编译器会优化它以生成一个字符串,在开头添加 Carrot,在结尾添加 bean,还是会为 Carrot 和 Bean 创建字符串,然后将每个字符串连接起来以创建字符串?

我想不同的编译器可能会有不同的操作,但一般来说这里会发生什么?

最佳答案

In the second line, will the compiler optimize this to making a one string with Carrot added to the beginning and bean to the end, or will it create strings for Carrot and Bean, and then concatenate each to create the string?

后者,因为 s 不是编译时常量表达式。如果将 s 的声明更改为:

const string s = "Potato";

... then 它将在编译时执行连接。您可以通过编译具有两个版本的代码来验证这一点,然后使用 ildasm 查看结果 - 在您的情况下,您会看到对 string.Concat(string, string , string) 而使用 const string s 你会在 IL 中看到已经连接的字符串。

关于c# - 如果将字符串引用设置为引号中的字符串,编译器是否会创建额外的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37418984/

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