2015-04-22 58 views
0

在一些代码,我期待通过作家所说:Array.Sort如何对包含字符串和双精度的类进行排序?

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

哪个属性将它通过如果类包含排序是:字符串s;和双d。

+0

可能的重复[如何在C#中按特定字段排序对象数组?](http://stackoverflow.com/questions/1301822/how-to-sort-an-array-of-object-by -a-specific-field-in-c) –

+0

OP的具体问题是什么在引擎盖下进行,而不是如何对数组进行排序。 –

+0

对于我而言,如果数组有两个或更多不同的非空引用,'Array.Sort'只会引发'InvalidOperationException'。 – PetSerAl

回答

0

在文档https://msdn.microsoft.com/en-us/library/6tf1f0bc(v=vs.110).aspx中指定,每个元素必须支持IComparable,在这种情况下,结果按照这些定义进行排序,如果某个元素不支持该接口,则结果是未定义的。

+0

public class Individual { public string chromosome; 公共双人健身; } 该类不从icomparable继承。但代码工作 – BinkyNichols

+0

@BinkyNichols是的,规范说结果是未定义的,但不能依赖它,或者结果可能会从.net 3.0改为4.0到5.0到6.0,或从.net到mono。您必须查看.net运行时代码才能获得任何保证,并确保您的项目永远不会升级.net或甚至安装Service Pack;该规范没有任何保证。 –

相关问题