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 == 5 | true |
!= | Not Equal To | ตรวจสอบว่าค่าสองตัวไม่เท่ากัน | 5 != 3 | true |
> | Greater Than | ตรวจสอบว่าค่าทางซ้ายมากกว่าทางขวา | 10 > 8 | true |
< | Less Than | ตรวจสอบว่าค่าทางซ้ายน้อยกว่าทางขวา | 2 < 5 | true |
>= | Greater Than or Equal To | ตรวจสอบว่าค่าทางซ้ายมากกว่าหรือเท่ากับทางขวา | 5 >= 5 | true |
<= | Less Than or Equal To | ตรวจสอบว่าค่าทางซ้ายน้อยกว่าหรือเท่ากับทางขวา | 4 <= 6 | true |
ตัวอย่างการใช้งาน Comparison Operator พื้นฐาน
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 เท่ากับ 10b <= 15→ เท็จเพราะ b มากกว่า 15
การใช้ Comparison Operator ในเงื่อนไข if
Comparison Operator มักใช้ร่วมกับคำสั่ง if เพื่อควบคุมการทำงานของโปรแกรมให้ตอบสนองต่อค่าที่เปรียบเทียบได้
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 (ตัวพิมพ์เล็กและใหญ่ถือว่าต่างกัน)
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
Console.WriteLine(userInput.Equals(username, StringComparison.OrdinalIgnoreCase)); // trueการใช้ Comparison Operator ร่วมกับ Logical Operators
เราสามารถใช้ตัวดำเนินการเปรียบเทียบหลายตัวรวมกันด้วย Logical Operators เช่น && (AND) และ || (OR) เพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้น
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 เมธอดนี้ในคลาส
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เป็นคนละอ็อบเจ็กต์ ถึงแม้มีข้อมูลเหมือนกัน แต่ไม่ใช่ที่อยู่เดียวกัน ผลลัพธ์จึงเป็นfalseobj3อ้างถึงอ็อบเจ็กต์เดียวกับobj1ผลลัพธ์จึงเป็นtrue
ข้อควรระวังในการใช้ Comparison Operators
- อย่าสับสนระหว่าง
=และ===ใช้กำหนดค่า==ใช้เปรียบเทียบค่า
หากเขียนผิดอาจทำให้ผลลัพธ์ในifผิดพลาดได้
- ระวังการเปรียบเทียบชนิดข้อมูลต่างประเภท
เช่น"10" == 10จะไม่สามารถเปรียบเทียบได้โดยตรง ต้องแปลงชนิดข้อมูลก่อน - หลีกเลี่ยงการเปรียบเทียบค่าทศนิยมแบบตรงตัว
ควรใช้ค่าช่วง (epsilon) เพื่อป้องกันความคลาดเคลื่อนทางคณิตศาสตร์ เช่น
if (Math.Abs(a - b) < 0.0001)
{
Console.WriteLine("เท่ากันโดยประมาณ");
}Comparison Operator เป็นหนึ่งในพื้นฐานสำคัญของภาษา C# ที่ใช้ในการตัดสินใจและควบคุมการทำงานของโปรแกรม การเข้าใจวิธีเปรียบเทียบค่าอย่างถูกต้องจะช่วยให้เราเขียนโค้ดได้แม่นยำ ลดข้อผิดพลาด และสามารถสร้างเงื่อนไขที่ซับซ้อนขึ้นได้อย่างมีประสิทธิภาพ
