ภาพรวม
เมธอด Equals() ของ StringBuilder เปรียบเทียบ เนื้อหา (content) ไม่ใช่ reference คืน bool
ตัวอย่างโค้ดเต็ม
using System;
using System.Text;
class Demo
{
static void Main()
{
StringBuilder str1 = new StringBuilder();
str1.Append("Tim").Append("Tom").Append("Henry");
StringBuilder str2 = new StringBuilder();
str2.Append("John").Append("David").Append("Beth");
if (str1.Equals(str2))
Console.WriteLine("Contents are equal!");
else
Console.WriteLine("Contents are unequal!");
}
}
ผลลัพธ์
Contents are unequal!
ข้อสังเกตสำคัญ
sb1.Equals(sb2)เปรียบเทียบเนื้อหา (value equality)sb1 == sb2เปรียบเทียบ reference (คืน false แม้เนื้อหาเหมือนกัน)- การเปรียบเทียบคำนึงถึง: ความยาว, ตัวอักษรทุกตัว, case-sensitive
- สำหรับ case-insensitive:
sb1.ToString().Equals(sb2.ToString(), StringComparison.OrdinalIgnoreCase)
ประสิทธิภาพ
เร็วกว่า sb1.ToString() == sb2.ToString() เพราะไม่ต้องสร้างสตริงชั่วคราว