C# 如何对包含字符串和双精度的类进行排序?

C# 如何对包含字符串和双精度的类进行排序?,c#,C#,在我浏览的一些代码中,作者写道: Individual[] candidates = new Individual[tournSize]; for (int i = 0; i < tournSize; ++i) candidates[i] = population[indexes[i]]; Array.Sort(candidates); 如果类包含以下内容,它将按哪个属性进行排序:字符串s;和双d。在文档中指定,每个元素都必须支持IComparable,在这种情况下,结果按这些定义排序,

在我浏览的一些代码中,作者写道:

Individual[] candidates = new Individual[tournSize];
for (int i = 0; i < tournSize; ++i)
candidates[i] = population[indexes[i]];
Array.Sort(candidates);

如果类包含以下内容,它将按哪个属性进行排序:字符串s;和双d。

在文档中指定,每个元素都必须支持IComparable,在这种情况下,结果按这些定义排序,如果元素不支持该接口,则结果是未定义的。

可能重复OP专门询问引擎盖下发生了什么,而不是如何排序数组。对我来说,如果数组有两个或多个不同的非空引用,Array.Sort只会抛出InvalidOperationException。公共类Individual{public string Chrome;public double fitness;}类不会从icomparable继承。然而,代码works@BinkyNichols是的,规范说结果是未定义的,但这意味着您不能依赖它,或者结果可能会从.net 3.0更改为4.0到5.0到6.0,或者从.net更改为mono。您必须查看.net运行时代码以获得任何保证,并确保您的项目永远不会升级.net甚至安装service pack;规范没有任何保证。