String .Equals() vs ==

พอดีเมื่อวันพฤหัสก่อน เห็นน้องที่ทำงานใช้ Operator == ในการตรวจสอบว่า String เป็นอันเดียวกันไหม แต่ผมเห็นแล้วรู้สึกแปลกๆ มันควรใช้ Method Equals() มากกว่าครับ ใน Blog ตอนนี้ผมแสดงความแตกต่างของ .Equals() กับ == โดยผมยกตัวอย่างเฉพาะในภาษา Java และ C# ที่ผมใช้งานหลักอยู่ครับ – JAVA – C# ความแตกต่างของ String .Equals() vs == จาก Code ทั้ง 2 แบบ เราจะเห็นความแตกต่างกันของ String นะครับ (ตามตัวอย่างของ C# และ Java นะครับ) – Method Equals Method Equals: มันตรวจสอบทั้ง Reference และ Value ครับ เจ้า Method Equals() เป็น polymorphic หลายคนอาจจะงงครับ ถ้าเป็นคำว่า Polymorphism อาจจะร้องอ๋อ – Operator Equals (==) Operator Equals (==): ตรวจสอบ Reference อย่างเดียวครับ ตำแหน่งของหน่วยความจำใน Memory ถ้าเป็นพวกภาษา C ก็ Pointer นั้นแหละครับ สรุป ในการตรวจสอบว่า String เหมือนกัน ไม่ว่าเป็น Java หรือ C# ที่ผมยกตัวอย่างมา ต้องใช้ Method Equals() ถึงเหมาะสมกว่านะครับ เดี๋ยวเจอ Defect ที่คิดว่าเป็นความบกพร่องของตัวภาษา แต่จริงๆแล้ว เรายังไม่เข้าใจมันมากกว่า







