using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Comparison委托进行排序
{
class Program
{
static void Main(string[] args)
{
List<string> listArray = new List<string>();
listArray.Add("Pachycephalosaurus");
listArray.Add("Amargasaurus");
listArray.Add("");
listArray.Add(null);
listArray.Add("Mamenchisaurus");
listArray.Add("Deinonychus");
Console.WriteLine("==>进行排序前的结果:");
Output(listArray);
Comparison<string> del = delegate(string str1, string str2)
{//现根据长度排序然后再根据,字母的顺序排序
if (str1 == null)
{
if (str2 == null)
{
return 0;
}
else
{
return -1;
}
}
else
{
if (str2 == null)
{
return 1;
}
else
{
int result = str1.Length.CompareTo(str2.Length);
if (result != 0)
{
return result;
}
else
{//标示长度相等时
return str1.CompareTo(str2);
}
}
}
};
Console.WriteLine("\n==>进行排序后的结果:");
listArray.Sort(del);
Output(listArray);
Console.ReadKey();
}
private static void Output(List<string> list)
{
foreach (string s in list)
{
if (s == null)
Console.WriteLine("==>(null)");
else
Console.WriteLine("==>{0}", s);
}
}
}
}
追加一些MSDN的说明:
此委托由 Array 类的 Sort<T>(T[], Comparison<T>) 方法重载和 List<T> 类的 Sort(Comparison<T>) 方法重载使用,用于对数组或列表中的元素进行【排序】。
类型参数
-
in
T
-
要比较的对象的类型。
该类型参数是逆变的。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
参数
-
x
-
类型:
T
要比较的第一个对象。
-
y
-
类型:
T
要比较的第二个对象。