Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức StringBuilder.ToString() trong C#

Phương thức StringBuilder.ToString() trong C# được dùng để chuyển đổi giá trị của một StringBuilder thành một String. Đây là cách tiêu chuẩn để lấy kết quả chuỗi sau khi xây dựng xong bằng StringBuilder.

Cú pháp

public override string ToString();
public string ToString(int startIndex, int length);
  • startIndex: Vị trí bắt đầu của chuỗi con (từ 0).
  • length: Độ dài của chuỗi con.

Ví dụ 1: Chuyển đổi cơ bản và quản lý dung lượng

using System;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("Katie");

        Console.WriteLine("Chuỗi = " + strBuilder.ToString());
        Console.WriteLine("\nDung lượng StringBuilder = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài StringBuilder = " + strBuilder.Length);

        // Đảm bảo dung lượng tối thiểu 35
        strBuilder.EnsureCapacity(35);
        Console.WriteLine("\nDung lượng sau EnsureCapacity(35) = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài = " + strBuilder.Length);

        // Xóa nội dung
        strBuilder.EnsureCapacity(0);
        strBuilder.Length = 0;
        Console.WriteLine("\nDung lượng sau xóa = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài sau xóa = " + strBuilder.Length);
    }
}

Kết quả

Chuỗi = Katie
Dung lượng StringBuilder = 16
Độ dài StringBuilder = 5
Dung lượng sau EnsureCapacity(35) = 35
Độ dài = 5
Dung lượng sau xóa = 35
Độ dài sau xóa = 0

Ví dụ 2: Lấy chuỗi con với ToString(startIndex, length)

using System;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("TomHanks");

        Console.WriteLine("StringBuilder = " + strBuilder.ToString());
        // Lấy 5 ký tự từ chỉ mục 3 -> "Hanks"
        Console.WriteLine("Chuỗi con (3, 5) = " + strBuilder.ToString(3, 5));

        Console.WriteLine("\nDung lượng = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài = " + strBuilder.Length);

        strBuilder.EnsureCapacity(35);
        Console.WriteLine("\nDung lượng sau EnsureCapacity(35) = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài = " + strBuilder.Length);

        strBuilder.EnsureCapacity(0);
        strBuilder.Length = 0;
        Console.WriteLine("\nDung lượng sau xóa = " + strBuilder.Capacity);
        Console.WriteLine("Độ dài sau xóa = " + strBuilder.Length);
    }
}

Kết quả

StringBuilder = TomHanks
Chuỗi con (3, 5) = Hanks
Dung lượng = 16
Độ dài = 8
Dung lượng sau EnsureCapacity(35) = 35
Độ dài = 8
Dung lượng sau xóa = 35
Độ dài sau xóa = 0

Các điểm quan trọng

  • ToString() không tham số: Trả về toàn bộ nội dung hiện tại.
  • ToString(index, length): Trả về chuỗi con, không thay đổi StringBuilder gốc.
  • Capacity ≥ Length luôn đúng. Capacity tự động mở rộng khi cần.
  • Gán Length = 0 xóa nội dung nhưng giữ Capacity (tối ưu tái sử dụng).
  • EnsureCapacity(0) không thu nhỏ dung lượng, chỉ đảm bảo tối thiểu.

Mẹo hiệu suất

Khi xây dựng chuỗi lớn trong vòng lặp, luôn dùng StringBuilder thay vì nối chuỗi bằng +:

// Kém hiệu suất
string result = "";
for (int i = 0; i < 1000; i++) result += i.ToString();

// Hiệu suất tốt
var sb = new StringBuilder();
for (int i = 0; i < 1000; i++) sb.Append(i);
string result = sb.ToString();