String .Equals() vs ==

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