加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:07:35 所属栏目:百科 来源:网络整理
导读:我总是想知道什么是可变性.为什么.net设计人员只开发了stringbuilder类来实现字符串类的可变性.考虑到int而不是int的intbuilder无论数据类型如何,字符串都以完全相同的方式实现. 解决方法 许多其他语言为字符串提供了类似的设计:带有 StringBuffer和 String
我总是想知道什么是可变性.为什么.net设计人员只开发了stringbuilder类来实现字符串类的可变性.考虑到int&而不是int的intbuilder无论数据类型如何,字符串都以完全相同的方式实现.

解决方法

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

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

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

int不存在构建器的原因:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读