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≥Lengthluôn đúng. Capacity tự động mở rộng khi cần.- Gán
Length = 0xó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();