依然不明白Array.Sort参数中myComparer的作用!!!先请看下面的代码,然后....因为从myComparer中的定义中可以看出是相当于对两个比较的参数进行互换,也就是说,比如,x=1, y=2,按正常的比较是返回<0,但是使用了定义的myComparer之后返回的是>0
所以,参数myComparer是不是认为是对Array.Sort排序用倒排序的方法?也就是说仅仅是为了改变排序方向?如果是的话,sort的这个函数
      public static void Sort(Array, IComparer);    // MSDN 上的定义
中的IComparer参数难道仅仅是为了能够实现排序方向的控制?
using System;
using System.Collections;public class SamplesArray  
{ public class myReverserClass : IComparer  
{
// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y )  
{
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}
} public static void Main()  
{
String[] myArr = { "The", "QUICK", "BROWN", "FOX", "jumps", "over", "the", "lazy", "dog" };
IComparer myComparer = new myReverserClass(); Console.WriteLine( "排序前:" );
PrintIndexAndValues( myArr ); Array.Sort( myArr, myComparer );
Console.WriteLine( "排序后:" );
PrintIndexAndValues( myArr );
} public static void PrintIndexAndValues( String[] myArr )  
{
for ( int i = 0; i < myArr.Length; i++ )  
{
Console.WriteLine( "   [{0}] : {1}", i, myArr[i] );
}
Console.WriteLine();
}
}
/* 
排序前:
   [0] : The
   [1] : QUICK
   [2] : BROWN
   [3] : FOX
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog
排序后:
   [0] : the
   [1] : The
   [2] : QUICK
   [3] : over
   [4] : lazy
   [5] : jumps
   [6] : FOX
   [7] : dog
   [8] : BROWN*/

解决方案 »

  1.   

    public class myReverserClass : IComparer   

    // Calls CaseInsensitiveComparer.Compare with the parameters reversed. 
    int IComparer.Compare( Object x, Object y )   

    return( string.Compare((int)x,(int)y); 
    return( -string.Compare((int)x,(int)y); 


    它只是个例子。。
    你可以实现它的倒序,正序的排列,也可以按照int,string来进行排序。也可以排列对象等等
      

  2.   

    IComparer 就是为了实现自定义排序
      

  3.   


    或者可以这么说,IComparer参数是在一次完整的Sort中起作用,因此IComparer参数的作用是可以放入一些比较逻辑,比如倒序排序,比如对某些值可以不排序(不排序是不是这个参数为0?)。
      

  4.   


     http://lokcore.com/sunny/article.asp?id=20 使用比较策略进行比较排序
      可以参考!