1

我是 C# 新手,所以请原谅我的错误。

我想在每次调用那段代码时替换字符串的某些部分(每次调用 2-4 次)。我想知道哪种方法在性能方面更好用:string.Replace还是stringBuilder.Replace()

如果这段代码被同时调用 10000 次怎么办?

4

3 回答 3

5

找出哪个更快的最佳方法是针对您的特定问题对其进行基准测试 - 编写一个简单的测试工具并为这两个选项计时。

话虽如此 - C# 字符串是不可变的,这意味着您在创建它们后无法更改它们。当您调用String.Replace运行时必须为结果创建一个新String实例。这意味着对同一字符串的一系列更改会很慢,因为运行时必须为每次操作创建一个新对象,分配内存并每次复制字符串数据。

StringBuilder被专门设计为这种情况的可变字符串 - 以避免String在每次操作时创建一个新实例。

因此StringBuilder,如果您Replace对同一字符串进行一系列调用,几乎肯定会更快。

于 2013-09-27T07:16:06.870 回答
2

在您的字符串制作后使用String.Replace(),它将立即替换所有位置。如果你用一些例子来解释你的场景会更好。

看看这个链接,它有一个很好的描述:比较 RegEx.Replace、String.Replace 和 StringBuilder.Replace – 哪个性能更好?

于 2013-09-27T07:11:51.683 回答
0

String替换不同于StringBuilder替换。但表面上它们是一样的。StringBuilder 纯粹是一种优化,但考虑到字符串使用的普遍性,它是至关重要的。String.Replace总是创建一个新字符串——StringBuilder.Replace不会。

于 2013-09-27T07:37:27.993 回答