Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

C# Enum.CompareTo() Method: เปรียบเทียบค่า Enum

เมธอด 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