Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เปรียบเทียบเนื้อหาสอง StringBuilder ใน C#


ภาพรวม

เมธอด 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() เพราะไม่ต้องสร้างสตริงชั่วคราว