当前位置: 首页 > news >正文

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这种址传递的方式,因此,这个就是被封装的原来

        

使用方法也很简单,隐式转换

http://www.dtcms.com/a/280354.html

相关文章:

  • C++中list各种基本接口的模拟实现
  • 【Java代码审计(2)】MyBatis XML 注入审计
  • 153.在 Vue 3 中使用 OpenLayers + Cesium 实现 2D/3D 地图切换效果
  • java中的接口
  • JavaScript 动态访问嵌套对象属性问题记录
  • HarmonyOS-ArkUI: Web组件加载流程1
  • 暴力破解:攻破系统的终极密钥
  • Rust指针选择
  • 安装带GPU的docker环境
  • 20250715使用荣品RD-RK3588开发板在Android13下接入USB3.0接口的红外相机
  • 【I3D 2024】Deblur-GS: 3D Gaussian Splatting from Camera Motion Blurred Images
  • 记录一条面试sql题目
  • JS中async/await功能介绍和使用演示
  • 普通字符类型和new String有什么区别
  • 使用JS编写动态表格
  • 【env环境】rtthread5.1.0使用fal组件
  • AI的外挂知识库,RAG检索增强生成技术
  • 【PTA数据结构 | C语言版】将表达式树转换成中缀表达式
  • 数仓面试题
  • 2025最新国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • docker停止所有容器和删除所有镜像
  • 从一道题目(阿里2014 Crackme_2)开启unidbg还原算法入门(转载)
  • 强化学习书籍
  • vscode 打开c++文件注释乱码
  • 分布式存储之Ceph使用指南--部署篇(未完待续)
  • Claude 背后金主亚马逊亲自下场,重磅发布 AI 编程工具 Kiro 现已开启免费试用
  • 【交叉编译报错】fatal: not a git repository (or any of the parent directories): .git
  • 分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?
  • 内存的基础相关知识,什么是内存,内存管理
  • 死锁问题以及读写锁和自旋锁介绍【Linux操作系统】