C# 为什么Comparer<;T>;。默认值是否存在于.NET中?
我想知道为什么我们需要使用Comparer.Default作为调用C# 为什么Comparer<;T>;。默认值是否存在于.NET中?,c#,.net,C#,.net,我想知道为什么我们需要使用Comparer.Default作为调用。Sort()默认情况下将调用CompareTo()函数?e、 g List<string> list = new List<string>() { "Apple", "Orange", "Banana" }; list.Sort(); list.Sort(Comparer<String>.Default); List List=newlist(){“苹果”、“橘子”、“香蕉”}; list.
。Sort()
默认情况下将调用CompareTo()
函数?e、 g
List<string> list = new List<string>() { "Apple", "Orange", "Banana" };
list.Sort();
list.Sort(Comparer<String>.Default);
List List=newlist(){“苹果”、“橘子”、“香蕉”};
list.Sort();
list.Sort(Comparer.Default);
list.Sort()
是否完全等同于list.Sort(Comparer.Default)
?那么,拥有Comparer.Default
的原因是什么呢?是否会自动默认使用Comparer.Default
?首先,list.Sort()
不是唯一需要IComparer
实现的时候。第二,在回答你的问题时,你可能会得到很多不同的意见。也就是说,为什么你认为拥有一个可以使用的对象没有用,而不是每次你想提供一个IComparer
时都必须创建一个新的对象?我能想到的一个例子是比较它存在的泛型类型,因为它做的是一项非常不寻常的工作。麻烦制造者是i可比较的
,一个类型可以实现以自定义比较的接口。但是像Sort这样的方法需要一个比较器。将泛型接口转换为类对象是在C#中无法实现的,默认属性实现使用名为createInstanceForOtherGenericParameter()的CLR提供的后门。请注意,MSDN docs for IComparable如何建议您创建自己的比较器。