字符串实际上是一个字符数组(is-a),还是它有一个字符数组作为内部存储(has-a),还是它自己的对象可以将自己暴露为带有字符数组的?
我更倾向于说它是它自己的对象,但那么为什么我们倾向于总是说"字符串是一个字符数组......"?
这取决于你对"字符串"这个词的定义.
System.String
.NET中的type有一个字符数组作为内部存储(它还存储长度(例如O(1)),例如).
但单词string意味着一般情况下连续出现的东西,也可能意味着字符数组:))
顺便说一句,当我说string
类型有一个"字符数组"时,我并不是指具体的"字段类型char[]
".我的意思是"数组"一词的一般含义是有序的集合.:))
.NET字符串不仅仅是一个字符数组.它包含一系列字符,严格来说,它有一个字符.
此外,也有不少Unicode相关奥妙在它不表现的东西就像一个数组.连接字符可能不仅仅是将字符串长度增加1,而是在末尾插入新字符.根据Unicode规范化规则,它实际上可能会更改整个字符串.因此,它是绝对不一样的字符数组,而是介于在类中,这样的一个数组存在.