最后我们可以通过Lambda表达式来实现上面的排序问题就更简单了:
static void Main(string[] args)
{
string[] strs = {
"黑马.net第5期就要开班了!",
"黑马老师3都很牛x!",
"ASP.NET 1",
"C#基础教程 2",
"SQL2008",
"VS2010"
};
//用Lambda表达式按长度排序
CompareAll(strs, (str1, str2) => str1.Length > str2.Length);
//-----------------------------------------------------------
//用Lambda表达式按字典规则排序
CompareAll(strs, (str1, str2) => string.Compare(str1, str2) > 0);
//-----------------------------------------------------------
//用Lambda表达式按出现的第一个数字进行排序
CompareAll(strs, (str1, str2) => Convert.ToInt32(Regex.Match(str1, @"\d+").Value) > Convert.ToInt32(Regex.Match(str2, @"\d+").Value));
for (int i = 0; i < strs.Length; i++)
{
Console.WriteLine(strs);//将三种方法分别打印输出,查看结果,多敲几遍,仔细体会!
}
Console.ReadKey();
}
public static void CompareAll(string[] strs, MyCompareDelegate compare)
{
for (int i = 0; i < strs.Length - 1; i++)
{
for (int j = 0; j < strs.Length - 1 - i; j++)
{
//为什么我们声明委托的时候需要bool类型的,为什么需要两个参数,这里就能看出来了
if (compare(strs[j], strs[j + 1]))
{
string tem = strs[j];
strs[j] = strs[j + 1];
strs[j + 1] = tem;
}
}
}
}
|