0

这两种字符串连接模式是否消耗相同数量的内存?

//Method 1
String testString = "Test " + " string " + " content";

//Method 2
String testString = "Test ";
testString = testString + " string ";
testString = testString + " content";   

我们应该避免这两种方法并使用StringBuilderclass 吗?

4

3 回答 3

2

是的,StringBuilder 是更好的选择。在您描述的所有其他情况下,您正在创建多个新字符串,因为字符串在 C# 中是不可变的并且无法更改。这会导致 c# 通过创建新字符串来模拟对字符串的更改。

方法一可以转换为单个字符串。无需连接固定子字符串来构建字符串

于 2013-05-08T02:56:39.307 回答
2

方法2会导致分配更多内存,需要创建字符串对象来存储以下组合

1) "Test "
2) " String"
3) "Test string"
4) " Content"
5) "Test String Content"

在方法 1 的情况下,只创建一个字符串

1) "Test string Content"

在这两种方法中应该首选方法1

StringBuilder当您需要构建一个涉及组合许多字符串值的字符串时,类更有效。

于 2013-05-08T03:34:21.230 回答
0

在我看来,这两种方法之间有很大的不同。构建后,在方法1中,string testString = "Test string content",但是在方法2中,string testString = "Test",在运行时,它们也是不同的,在方法1中,string testString只是引用到一个地址不可变,但在方法 2 中,clr 在堆中分配新内存并将字符串组合在一起。而且我认为 StringBuilder 是经常组合字符串的好方法。

于 2013-05-08T03:07:56.360 回答