String与StringBuilder
string字符串在开发中经常被用到,不过在需要频繁对字符串进行增加和删除时,使用StringBuilder有利于提升效率。
1、String
- string是一种引用类型而非值类型(某些方面像值类型)
- 使用“==”进行两个string对象的比较时,会比较内容而非引用地址
- 编译器会缓存相同字面量的字符串(如 “abc”),多个变量可能指向同一内存对象
string x = "abc";
string y = "abc";
Console.WriteLine(object.ReferenceEquals(x, y)); // 输出 True(同一对象)
以下是string类的常用方法(由AI生成):
2、StringBuilder及代码示例
- 解决String字符串修改时在堆中反复分配新内存空间的问题
- 使用前引入命名空间 System.Text
using System.Text;
namespace LearnString
{
internal class Program
{
static void Main(string[] args)
{
//StringBuilder
//解决String字符串修改时在堆中反复分配新内存空间的问题
//使用前引入命名空间 System.Text
StringBuilder sb = new StringBuilder("12345");
Console.WriteLine(sb.Capacity); //获取容量 16
Console.WriteLine(sb.Length); //获取长度 5
Console.WriteLine(sb); //12345
//普通添加
sb.Append("67");
//格式化添加
sb.AppendFormat("{0:F5}", 3.5);
Console.WriteLine(sb); //12345673.50000
//指定位置插入
sb.Insert(0, "a");
Console.WriteLine(sb); //a12345673.50000
//删除指定位置字符串
sb.Remove(1, 9);
Console.WriteLine(sb); //a50000
//替换字符
sb.Replace('a', 'v');
//索引访问,修改字符串
sb[sb.Length - 1] = 'c';
sb[sb.Length - 2] = 'f';
sb[sb.Length - 3] = 'k';
Console.WriteLine(sb); //v50kfc
}
}
}
3、参考资料
- 《唐老狮C#》
本篇结束,感谢您的阅读~