为了账号安全,请及时绑定邮箱和手机立即绑定

C#中的可变字符串和不可变字符串有什么区别?

C#中的可变字符串和不可变字符串有什么区别?

C#
萧十郎 2019-10-06 10:49:03
C#中的可变字符串和不可变字符串有什么区别?
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

可变和不可变是英文单词,分别表示“可以更改”和“不能更改”。在IT环境中,单词的含义相同;即


可变字符串可以更改,并且

不变的字符串不能更改。

在C#/ .NET中,这些词的含义与其他编程语言/环境中的含义相同,但是(显然)类型的名称可能会有所不同,其他细节也可能有所不同。


作为记录:


String 是标准的C#/ .Net不可变字符串类型

StringBuilder 是标准的C#/ .Net可变字符串类型

要在以C#表示的字符串上“实现更改” String,实际上需要创建一个新String对象。原稿String未更改...因为它不可更改。


在大多数情况下,最好使用String它们,因为这是更容易理解它们的原因。例如,您无需考虑其他线程可能“更改我的字符串”的可能性。但是,当您需要使用一系列操作来构造或修改字符串时,使用可能会更有效StringBuilder。


最后,对于那些断言a StringBuilder不是字符串,因为它不是不可变的人们,Microsoft 文档StringBuilder因此描述了:


“表示可变的字符串。不能继承此类。”


查看完整回答
反对 回复 2019-10-06
?
慕森卡

TA贡献1806条经验 获得超8个赞

String 是一成不变的


即字符串不能更改。当您更改字符串(例如通过添加到字符串)时,实际上是在创建新字符串。


但StringBuilder不是一成不变的(而是可变的)


因此,如果您必须多次更改字符串(例如多个串联),请使用StringBuilder。


查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 603 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信