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: বাহ্যিক স্ট্র্যাটেজি, একাধিক সর্টিং পদ্ধতি সম্ভব