C# ToCharArray + foreach遍历 + String与StringBuilder

一、ToCharArray() 字符串转字符数组(必考)

1. 作用

将整个字符串,整体转换为 char\[\] 字符数组,每一个字符单独作为数组元素。

2. 代码模板

复制代码
string s = "测试内容";
char[] cs = s.ToCharArray(); // 字符串转字符数组

二、foreach 遍历(专用遍历数组/集合)

1. 语法格式(必背)

复制代码
foreach (var item in 数组/集合)
{
    // item 代表当前每一个元素
}

2. 关键字解析

  • var:自动识别变量类型,任意类型都可以接收

  • item:自定义变量,代表当前遍历到的每一个元素(等价于 csi)

  • in:固定关键字,代表从集合中取出元素

  • 集合/数组:需要遍历的目标

3. 完整遍历代码

复制代码
char[] cs = s.ToCharArray();
foreach (var item in cs)
{
    Console.WriteLine(item + "------");
}

4. foreach特点

  • 无需下标、代码简洁

  • 只能读取,不能修改集合元素

  • 适合纯遍历输出


三、string 与 StringBuilder 核心区别(超级必考)

1. string 特点

  • string 是引用类型

  • 字符串不可变:一旦创建,无法修改原字符串

  • 底层基于 char\[\] 字符数组 实现

  • 每次拼接、修改、替换都会生成新字符串,丢弃旧数据

  • 频繁拼接性能极差

2. StringBuilder 特点

  • 可变字符串

  • 支持增、删、改、清空,直接操作原内存,不产生新对象

  • 容量满了会自动扩容

  • 大量拼接、频繁修改必须用 StringBuilder


四、性能对比原理(考试简答题)

1. string 拼接缺点

循环多次拼接 string:每次 += 都会开辟新内存、销毁旧内存,产生大量垃圾数据,速度极慢。

2. StringBuilder 优点

自带缓冲区,直接在原内存修改,自动扩容,几乎无性能损耗。

3. 测速工具 Stopwatch

专门用于检测代码执行耗时

  • Start():开始计时

  • Stop():停止计时

  • Elapsed:获取时分秒毫秒耗时


五、StringBuilder 五大核心方法(必背)

复制代码
StringBuilder sb = new StringBuilder();

1. Append() / AppendLine() 追加内容

  • Append():直接追加,不换行

  • AppendLine():追加内容并自动换行

2. Insert() 插入内容

sb.Insert(下标, 内容); // 在指定下标位置插入数据

3. Remove() 移除内容

sb.Remove(起始下标, 移除个数);

4. Clear() 清空

sb.Clear(); // 清空所有内容

5. Replace() 替换

sb.Replace("旧内容", "新内容"); // 批量替换匹配内容


六、Length 和 Capacity 区别(高频坑点)

  • Length :实际字符个数(真实长度)

  • Capacity :容器总容量(最大可容纳字符数,默认16,自动扩容)

示例:空sb默认 Capacity=16,Length=0


七、终极必背总结(默写版)

  • string 不可变,修改产生新对象,适合少量文本

  • StringBuilder 可变,直接修改原内存,适合大量拼接

  • ToCharArray() 字符串转字符数组

  • foreach 只读遍历,简化数组遍历

  • Length是实际长度,Capacity是容器容量

  • StringBuilder核心方法:增、插、删、清、换

相关推荐
白杨尚青14 分钟前
C++进阶篇(二):多态——虚函数、重写、虚函数表与三个经典坑(附完整代码仓库)
开发语言·c++·多态·虚函数·重写·动态绑定
玩泥巴的16 小时前
MAF + 飞书:让大模型干活,但别让它乱干
ai·c#·.net·飞书·agent
WJ.Polar18 小时前
Java封装、继承、多态
java·开发语言
摇滚侠18 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
weixin_3077791318 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
爱读书的小胖19 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
鸽鸽程序猿19 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
Lhappy嘻嘻19 小时前
读懂 JVM:内存模型、类加载机制、分代回收
java·开发语言·jvm
cpp_w20 小时前
C#基础3- 面向对象中级应用3
后端·c#
weixin_3077791320 小时前
C++代码实现MATLAB中的spectralcluster函数功能
开发语言·c++·算法·matlab