一、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核心方法:增、插、删、清、换