เมธอด CompareTo() ของ Enum ใช้เปรียบเทียบลำดับของค่า Enum สองค่า ส่งคืน Integer แสดงความสัมพันธ์
ค่าที่ส่งคืน
| ค่าที่ส่งคืน | ความหมาย |
|---|---|
| < 0 (Negative) | ค่าต้นทาง (this) น้อยกว่าเป้าหมาย |
| = 0 | ค่าต้นทาง เท่ากับ เป้าหมาย |
| > 0 (Positive) | ค่าต้นทาง มากกว่า เป้าหมาย |
ตัวอย่าง
using System;
class Program
{
enum Products
{
HardDrive = 0,
PenDrive = 4,
Keyboard = 8
}
static void Main()
{
Products prod1 = Products.HardDrive; // 0
Products prod2 = Products.PenDrive; // 4
Products prod3 = Products.Keyboard; // 8
Console.WriteLine($"Stock for {prod3} มากกว่า {prod2}?");
Console.WriteLine(prod3.CompareTo(prod2) > 0 ? "Yes" : "No"); // Yes
Console.WriteLine($"{prod1} vs {prod2}: {prod1.CompareTo(prod2)}"); // -1
Console.WriteLine($"{prod2} vs {prod2}: {prod2.CompareTo(prod2)}"); // 0
Console.WriteLine($"{prod3} vs {prod1}: {prod3.CompareTo(prod1)}"); // 1
}
}
ผลลัพธ์
Stock for Keyboard มากกว่า PenDrive? Yes HardDrive vs PenDrive: -1 PenDrive vs PenDrive: 0 Keyboard vs HardDrive: 1
รายละเอียด
- Enum Implement
IComparableและIComparable<T> - เปรียบเทียบ Underlying Value (int, byte, etc.)
- Enum ต้องเป็น Type เดียวกัน (Compile-time Check)
- ใช้กับ Sorting, Binary Search, Range Checking
การใช้งานกับ Sorting
var products = new[] { Products.Keyboard, Products.HardDrive, Products.PenDrive };
Array.Sort(products); // เรียงตาม Underlying Value: HardDrive(0), PenDrive(4), Keyboard(8)
// หรือ LINQ
var sorted = products.OrderBy(p => p); // ใช้ CompareTo อัตโนมัติ
CompareTo vs Equals
Equals- True/False เท่านั้นCompareTo- ให้ลำดับ (Less/Equal/Greater) ใช้สำหรับ Sorting