কম্পিউটার টিউটোরিয়াল

C#-এ IComparable vs IComparer ইন্টারফেস পার্থক্য

IComparable (সেলফ-কমপ্যারিজন)

অবজেক্ট নিজে নিজের সাথে অন্য অবজেক্ট তুলনা করে। CompareTo(T other) ইমপ্লিমেন্ট করতে হয়।

int IComparable.CompareTo(object ob)
{
    Vehicle v = (Vehicle)ob;
    return String.Compare(this.make, v.make);
}

IComparer (এক্সটার্নাল কমপ্যারিজন)

বাহের থেকে দুটি অবজেক্ট তুলনা করার জন্য। একাধিক সর্টিং লজিক সম্ভব।

private class SortYearAscendingHelper : IComparer
{
    int IComparer.Compare(object ob1, object ob2)
    {
        Vehicle v1 = (Vehicle)ob1;
        Vehicle v2 = (Vehicle)ob2;
        if (v1.year > v2.year) return 1;
        if (v1.year < v2.year) return -1;
        return 0;
    }
}

public static IComparer SortYearAscending()
{
    return new SortYearAscendingHelper();
}

পার্থক্য

  • IComparable: ক্লাসের নিজস্ব প্রাকৃতিক সর্ট অর্ডার (একটি)
  • IComparer: বাহ্যিক স্ট্র্যাটেজি, একাধিক সর্টিং পদ্ধতি সম্ভব
  1. জাভাতে Iterator এবং Enumeration ইন্টারফেসের পার্থক্য

  2. জাভায় Runnable এবং Callable ইন্টারফেসের পার্থক্য

  3. Go এবং Java-এর পার্থক্য

  4. অ্যাবস্ট্রাক্ট ক্লাস এবং ইন্টারফেসের পার্থক্য