gpt4 book ai didi

c# - 使用 String+string+string 与使用 string.replace

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:23 30 4
gpt4 key购买 nike

一位同事告诉我,使用以下方法:

 string url = "SomeURL";
string ext = "SomeExt";
string sub = "SomeSub";
string subSub = "moreSub";
string Url = @"http://www." + Url +@"/"+ ext +@"/"+ sub + subSub;

不是efficenet(占用更多资源),最好使用以下方法:

 string Url = @"http://www.#URL.#EXT/#sub/#subSub";
string url = "SomeURL";
string ext = "SomeExt";
string sub = "SomeSub";
string subSub = "moreSub";
Url = Url.Replace("#URL",url)
Url = Url.Replace("#EXT",ext);
Url = Url.Replace("#sub",sub);
Url = Url.Replace("#subSub",subSub);

这是真的吗?背后的解释是什么?

我读了这个 Answer 这让我想知道这个案子怎么样:

 string Url = @"http://www.#URL.#EXT/#sub/#subSub";
string url = "SomeURL";
string ext = "SomeExt";
string sub = "SomeSub";
string subSub = "moreSub";
string finalUrl = new StringBuilder(Url )
.Replace("#URL", "URL")
.Replace("#EXT", "EXT")
.Replace("#sub", "sub")
.Replace("#subSub", "subSub")
.ToString();

那么效率更高吗??

最佳答案

你的同事完全错了。

他错误地应用了字符串不可变这一事实,附加两个字符串将创建第三个字符串对象。
您的方法 (a + b + c) 是执行此操作的最有效方法。
编译器将您的代码转换为对 String.Concat(string[]) 的调用,它使用不安全代码为所有字符串分配一个缓冲区并将它们复制到缓冲区中。

他的建议是在循环中连接字符串时使用 StringBuilder。

编辑:String.Concat(相当于+ 连接,就像您的第一个示例)是执行此操作的最快方法。在您的编辑中使用 StringBuilder 会变慢,因为它需要在每次 Replace 调用期间调整字符串的大小。

关于c# - 使用 String+string+string 与使用 string.replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2708550/

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