मैंने इसे आजमाने के लिए एक परीक्षण कार्यक्रम लिखा था। ऐसा लगता है कि यह वास्तव में तुलना करता है() उसी तत्व को स्वयं (कम से कम तुलना करें) को दो बार एक ही आइटम के लिए बुलाया जाता है)। इस कार्यक्रम में, तुलना() को तर्क (2, 2) के साथ बुलाया जाता है।
using System;
using System.Collections.Generic;
static class Program
{
class MyComparer : Comparer<int>
{
public override int Compare(int x, int y)
{
Console.WriteLine("Compare(" + x + ", " + y + ")");
if (x < y) return -1;
if (x > y) return 1;
return 0;
}
}
static void Main()
{
MyComparer comparer = new MyComparer();
List<int> list = new List<int> { 1, 2, 3 };
list.Sort(comparer);
return;
}
}
और उत्पादन होता है:
Compare(1, 2)
Compare(1, 3)
Compare(2, 3)
Compare(1, 2)
Compare(2, 2)
Compare(2, 3)
Compare(2, 2)
निश्चित रूप से, यदि सूची <> एक ही वस्तु को एक से अधिक बार शामिल करती है। –
@ हंस: हाँ, मेरी हटाई गई टिप्पणी में थोड़ा उलझ गया। मैं एक सूची के साथ काम कर रहा था जिसमें एक वर्ग के उदाहरण शामिल थे। बेशक, कुछ कार्यक्रमों में, सूची में कई बार एक ही घटना होने के लिए भी संभव हो सकता है। लेकिन संपादित के रूप में, मैं उस मामले पर सोच रहा था जहां सूची में कक्षा के अलग-अलग उदाहरण थे। – ForeverLearnNeverMaster
@ हंस: जॉनडी का जवाब देखें? – ForeverLearnNeverMaster