c# 学习笔记 - StringBuilder

发布时间:2024年01月11日

1. 介绍

1.1 基本介绍

? 类结构
在这里插入图片描述
? StringBuilder官方参考文档:StringBuilder类
?

1.2 深层细节

?

2. 构造和属性

2.1 StringBuilder 构造

? 相关构造方法
在这里插入图片描述

class Test {
    static void Main() {
        int capacity = 20; // 建议容量
        int maxCapacity = 2000;
        string? str = "hello, world";

        StringBuilder s1 = new StringBuilder(); // 默认起始容量为16
        StringBuilder s2 = new StringBuilder(capacity);
        StringBuilder s3 = new StringBuilder(str); // 若为null --> 空字符串, 默认起始容量为字符串长度
        StringBuilder s4 = new StringBuilder(capacity, maxCapacity); // 若capacity == 0 --> capacity自动转换为maxCapacity
        StringBuilder s5 = new StringBuilder(str, capacity); // 若 str 长度 大于capacity, 则初始capacity长度等于str的长度 
        StringBuilder s6 = new StringBuilder(capacity, maxCapacity);

        int startIndex = 1, length = str.Length - 1;
        StringBuilder s7 = new StringBuilder(str, startIndex, length, capacity);
    }
}

?

2.2 StringBuilder 属性

  1. public int Capacity { get; set; } ==> 当前存储容量
  2. public char this[int index] { get; set; } ==> 获取或设置此实例中指定字符位置处的字符。
  3. public int Length { get; set; } ==> 获取或设置当前 StringBuilder 对象的长度(可以设置,若短就截断,若长了则向后补充’\0’字符)
  4. public int MaxCapacity { get; } ==> 获取此实例的最大容量。
class Test {
    static void Main() {
        string str = "hello, world";
        
        StringBuilder sb = new StringBuilder(str);
        Console.WriteLine(sb.Capacity);
        Console.WriteLine(sb[0]);
        Console.WriteLine(sb.Length);
        Console.WriteLine(sb.MaxCapacity);
    }
}
/*
16
h
12
2147483647
*/

?

3. 方法

3.1 添加相关

? 总结

  1. StringBuilder.Append:向此实例追加指定对象的字符串表示形式
  2. StringBuilder.AppendLine:将默认的行终止符(或指定字符串的副本和默认的行终止符)追加到此实例的末尾。

? 代码

class Test {
    static void Main() {
        string str = "hello, world";
        StringBuilder sb = new StringBuilder(str);

        sb.Append("添加于同一行....");
        sb.AppendLine(",  我后面跟着一个行终止符哟......");
        sb.Append("我在新的一行啦......");
        Console.WriteLine(sb);

        // ? 可以用于可空类型的声明,添加到sb后面,此时即使sb == null, 也不会抛出异常,返回的StringBuilder会为 null 
        sb = null; 
        StringBuilder sb_tmp = sb?.AppendLine("");         
    }
}
/*
hello, world添加于同一行....,  我后面跟着一个行终止符哟......
我在新的一行啦......
*/
文章来源:https://blog.csdn.net/weixin_51566349/article/details/135520607
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。