微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么只有字符串是不可变的而不是其他数据类型

我总是想知道什么是可变性.为什么.net设计人员只开发了stringbuilder类来实现字符串类的可变性.考虑到int&而不是int的intbuilder无论数据类型如何,字符串都以完全相同的方式实现.

解决方法

许多其他语言为字符串提供了类似的设计:带有 StringBufferStringBuilder的Java,带有 StringBuilder的Scala,带有MutableString though there are other,beter solutions in Python的Python.在C字符串中是可变的,因此不需要构建器.

构造符存在于字符串的原因是:

>许多语言将字符串定义为不可变(任何更改都需要内存中的新对象)
>字符串往往很大,比整数大得多
> [1]和[2]相结合导致效率低下

int不存在构建器的原因:

>它本身就是简单的数据结构
>大多数cpu都有优化的指令来处理简单的数字(添加,带走等)
>大多数cpu只使用寄存器或快速cpu缓存就可以在一个或几个周期内有效地处理[2]指令
> [2]和[3]结合起来消除了优化的需要
>根本不需要改变int,但是,如果需要,可以使用BitConverterbinary shift operations

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐