c#进阶之数据结构(字符串篇)----String
1、String介绍
首先我们得明白,string和String代表的实际上是同一个类型,string是C#中的关键字,代表String类型,因此我们直接来学习String类型。
从官方的底层实现代码可以看出,当前String类型实际上就是一个Char类型的聚合,这里既然是聚合其实也可以得到结论就是string可以使用迭代器进行访问。但是,string类型是不可变的。
为什么string类型不可变?:原因有很多,但是从底层的角度出发
其实可以看出来,他只有get没有set,所以是不可变的。
下面是构造函数,注意带有指针的部分是并不适用于CLS(通用语言规范),也就是c#原生语法的。
2、字段
目前只有一个字段
3、属性
string类型有两个属性。
索引器,只读
char长度,只读
其实从这里就可以看出来,c#官方推介使用string只是作为临时存储,不希望通过属性或者字段来实现增删改查。
4、方法
这里选择比较有代表性或者比较常用的方法。
注意:string类型是不可变的,因此他实际的修改都是返回新的string来实现。
4.1、EndsWith(尾匹配)
4.2、Format(模板格式):不多介绍,常用
4.3、Replace(替换)
注意,他并不是指只替换第一个,而是全部。
4.4、ReplaceLineEndings (替换所有换行字符)
4.5、Split(拆分,返回string数组)
4.6、StartsWith(开头是否匹配)
4.7、Substring (返回子字符串)
4.8、ToCharArray (返回当前字符串的char数组)
这里必须要注意点,修改这个char数组里面的值并不会修改string原来的值!可以通过下面的源码得到这个结论
4.9、TryCopyTo(复制到目标范围):做了解,了解一下什么是span
5、运算符
实现了+法。==和!=判断。
除此之外还实现了一个。
可以理解为封装器,这个span是new出来的,但是value通过的是ref这种址传递的方式,因此,这个就是被封装的原来
使用方法也很简单,隐式转换