Comparison Operator ในภาษา C#

Comparison Operator ในภาษา C#
Comparison Operator หรือ “ตัวดำเนินการเปรียบเทียบ” คือเครื่องหมายที่ใช้ในการเปรียบเทียบค่าระหว่างตัวแปรหรือค่าคงที่สองตัวในภาษา C# โดยผลลัพธ์ของการเปรียบเทียบจะเป็นค่าตรรกะ (boolean) คือ true หรือ false

ตัวดำเนินการประเภทนี้เป็นหัวใจสำคัญของการเขียนโปรแกรมเชิงเงื่อนไข (Conditional Programming) เช่น การใช้ในคำสั่ง if, while, for หรือ switch เพื่อให้โปรแกรมตัดสินใจทำงานบางอย่างตามผลการเปรียบเทียบ

พูดง่าย ๆ คือ Comparison Operator ใช้ถามว่า “ค่าหนึ่งเท่ากับหรือมากกว่าอีกค่าหนึ่งไหม?” แล้วได้คำตอบกลับมาเป็นจริง (true) หรือเท็จ (false)

ประเภทของ Comparison Operator ในภาษา C#

ภาษา C# มีตัวดำเนินการเปรียบเทียบหลัก 6 ตัวดังนี้

ตัวดำเนินการชื่อภาษาอังกฤษคำอธิบายตัวอย่างผลลัพธ์
==Equal Toตรวจสอบว่าค่าทั้งสองเท่ากันหรือไม่5 == 5true
!=Not Equal Toตรวจสอบว่าค่าสองตัวไม่เท่ากัน5 != 3true
>Greater Thanตรวจสอบว่าค่าทางซ้ายมากกว่าทางขวา10 > 8true
<Less Thanตรวจสอบว่าค่าทางซ้ายน้อยกว่าทางขวา2 < 5true
>=Greater Than or Equal Toตรวจสอบว่าค่าทางซ้ายมากกว่าหรือเท่ากับทางขวา5 >= 5true
<=Less Than or Equal Toตรวจสอบว่าค่าทางซ้ายน้อยกว่าหรือเท่ากับทางขวา4 <= 6true

ตัวอย่างการใช้งาน Comparison Operator พื้นฐาน

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            Console.WriteLine(a == b);  // false
            Console.WriteLine(a != b);  // true
            Console.WriteLine(a > b);   // false
            Console.WriteLine(a < b);   // true
            Console.WriteLine(a >= 10); // true
            Console.WriteLine(b <= 15); // false
        }
    }
}
  • int a = 10, b = 20; → สร้างตัวแปรสองตัวเพื่อใช้เปรียบเทียบ
  • a == b → ตรวจสอบว่าค่าของ a และ b เท่ากันหรือไม่ (ผลคือ false)
  • a != b → ตรวจสอบว่า a ไม่เท่ากับ b (ผลคือ true)
  • a > b และ a < b → เปรียบเทียบขนาดระหว่างสองค่า
  • a >= 10 → จริงเพราะ a เท่ากับ 10
  • b <= 15 → เท็จเพราะ b มากกว่า 15

การใช้ Comparison Operator ในเงื่อนไข if

Comparison Operator มักใช้ร่วมกับคำสั่ง if เพื่อควบคุมการทำงานของโปรแกรมให้ตอบสนองต่อค่าที่เปรียบเทียบได้

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรุณาป้อนอายุของคุณ: ");
            int age = Convert.ToInt32(Console.ReadLine());

            if (age >= 18)
            {
                Console.WriteLine("คุณสามารถเข้าสู่ระบบได้");
            }
            else
            {
                Console.WriteLine("คุณยังไม่ถึงเกณฑ์อายุที่กำหนด");
            }
        }
    }
}
  • โปรแกรมรับค่าอายุจากผู้ใช้
  • ใช้ age >= 18 เพื่อเปรียบเทียบว่าอายุถึงเกณฑ์หรือไม่
  • ถ้าเงื่อนไขเป็นจริง (true) จะเข้าสู่บล็อก if
  • ถ้าไม่จริง (false) จะเข้าสู่บล็อก else

การเปรียบเทียบค่าข้อความ (String Comparison)

นอกจากตัวเลขแล้ว เราสามารถใช้ Comparison Operator กับข้อความ (string) ได้เช่นกัน โดยใน C# การเปรียบเทียบข้อความจะเป็นแบบ case-sensitive (ตัวพิมพ์เล็กและใหญ่ถือว่าต่างกัน)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string userInput = "Admin";
            string username = "admin";

            Console.WriteLine(userInput == username); // false
            Console.WriteLine(userInput != username); // true
        }
    }
}
  • การใช้ == กับข้อความจะเปรียบเทียบอักขระทุกตัวรวมถึงตัวพิมพ์
  • "Admin" และ "admin" ถือว่าไม่เท่ากันเพราะ A กับ a ต่างกัน
  • ผลลัพธ์คือ false และ true ตามลำดับ

ถ้าต้องการเปรียบเทียบแบบไม่สนใจตัวพิมพ์ (case-insensitive) ใช้ Equals() พร้อมตัวเลือก StringComparison.OrdinalIgnoreCase

C#
Console.WriteLine(userInput.Equals(username, StringComparison.OrdinalIgnoreCase)); // true

การใช้ Comparison Operator ร่วมกับ Logical Operators

เราสามารถใช้ตัวดำเนินการเปรียบเทียบหลายตัวรวมกันด้วย Logical Operators เช่น && (AND) และ || (OR) เพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้น

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int score = 75;

            if (score >= 50 && score <= 100)
            {
                Console.WriteLine("ผ่านเกณฑ์");
            }
            else
            {
                Console.WriteLine("ไม่ผ่านเกณฑ์");
            }
        }
    }
}
  • ใช้ score >= 50 และ score <= 100 ร่วมกันด้วย &&
  • เงื่อนไขจะเป็นจริงเฉพาะเมื่อคะแนนอยู่ในช่วง 50–100
  • ถ้าคะแนนน้อยกว่า 50 หรือมากกว่า 100 ผลลัพธ์จะเป็นเท็จ

การเปรียบเทียบวัตถุ (Object Comparison)

เมื่อเปรียบเทียบวัตถุหรือคลาส C# จะใช้การอ้างอิงหน่วยความจำ (Reference) โดยตรง ไม่ใช่ค่าภายใน ถ้าต้องการตรวจสอบค่าภายในจริง ๆ ต้องเขียน Equals() หรือ override เมธอดนี้ในคลาส

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            object obj1 = new object();
            object obj2 = new object();
            object obj3 = obj1;

            Console.WriteLine(obj1 == obj2); // false
            Console.WriteLine(obj1 == obj3); // true
        }
    }
}
  • obj1 และ obj2 เป็นคนละอ็อบเจ็กต์ ถึงแม้มีข้อมูลเหมือนกัน แต่ไม่ใช่ที่อยู่เดียวกัน ผลลัพธ์จึงเป็น false
  • obj3 อ้างถึงอ็อบเจ็กต์เดียวกับ obj1 ผลลัพธ์จึงเป็น true

ข้อควรระวังในการใช้ Comparison Operators

  1. อย่าสับสนระหว่าง = และ ==
    • = ใช้กำหนดค่า
    • == ใช้เปรียบเทียบค่า
      หากเขียนผิดอาจทำให้ผลลัพธ์ใน if ผิดพลาดได้
  2. ระวังการเปรียบเทียบชนิดข้อมูลต่างประเภท
    เช่น "10" == 10 จะไม่สามารถเปรียบเทียบได้โดยตรง ต้องแปลงชนิดข้อมูลก่อน
  3. หลีกเลี่ยงการเปรียบเทียบค่าทศนิยมแบบตรงตัว
    ควรใช้ค่าช่วง (epsilon) เพื่อป้องกันความคลาดเคลื่อนทางคณิตศาสตร์ เช่น
C#
if (Math.Abs(a - b) < 0.0001)
{
    Console.WriteLine("เท่ากันโดยประมาณ");
}

Comparison Operator เป็นหนึ่งในพื้นฐานสำคัญของภาษา C# ที่ใช้ในการตัดสินใจและควบคุมการทำงานของโปรแกรม การเข้าใจวิธีเปรียบเทียบค่าอย่างถูกต้องจะช่วยให้เราเขียนโค้ดได้แม่นยำ ลดข้อผิดพลาด และสามารถสร้างเงื่อนไขที่ซับซ้อนขึ้นได้อย่างมีประสิทธิภาพ

แชร์เรื่องนี้