Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Comparer<;T>;。默认值是否存在于.NET中?_C#_.net - Fatal编程技术网

C# 为什么Comparer<;T>;。默认值是否存在于.NET中?

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.

我想知道为什么我们需要使用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();
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如何建议您创建自己的比较器。