委托让冒泡排序的扩展更加优雅--开闭原则的使用
2012-11-08 15:41
381 查看
委托让冒泡排序的扩展更加优雅--开闭原则的使用
作者:水木年华 | 出处:博客园 | 2011/10/6 18:27:57 | 阅读1次
本文主要谈的是委托相关运用。包括委托的简单定义,使用,好处;以及委托和Lambda的关系。所有知识点都简化为启发式的注释,应该不难理解,希望对你有帮助。
/// <summary>
/// 委托让排序代码更加优雅(易扩展,易维护)
/// 本文包含知识点:
/// 1.委托定义
/// 2.委托的好处
/// 3.Lamda(语句Lamda和委托Lambda)
/// 4.Lambda和委托的关系
/// </summary>
class Program
{
//定义内嵌委托(委托本质是一个类;编译器默认为继承自System.Delegate)
public delegate bool ComparerionHandler(int first, int second);
static void Main(string[] args)
{
int[] beforeSortList = new int[3] { 1, 3, 2 };
Console.WriteLine(string.Join(",", beforeSortList.ToArray()));
///实名委托传递参数
//int[] afterSortList = BubbleSort(beforeSortList, Asb);
///匿名方法传递参数
//int[] afterSortList = BubbleSort(beforeSortList, delegate(int first, int second) { return first > second; });
///语句Lambda传递参数(Lambda是匿名方法的简化语法)
int[] afterSortList = BubbleSort(beforeSortList, (first, second)=>{ return first > second; });
Console.WriteLine(string.Join(",", afterSortList.ToArray()));
}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//利用委托达到-->对扩展是开放的
//升序
//public static bool Asb(int first, int second)
//{
// return first > second;
//}
//降序
public static bool Desc(int first, int second)
{
return first < second;
}
//字母排序
//可扩展的其他排序……
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//冒泡排序
//利用委托达到-->对修改是封闭的
public static int[] BubbleSort(int[] list, ComparerionHandler compareion)
{
int temp;
for (int i = list.Length - 1; i >= 0; i--)
{
for (int j = 1; j <= i; j++)
{
if (compareion(list[j - 1], list[j]))
{
temp = list[j];
list[j] = list[j - 1];
list[j - 1] = temp;
}
}
}
return list;
}
}
作者:水木年华 | 出处:博客园 | 2011/10/6 18:27:57 | 阅读1次
本文主要谈的是委托相关运用。包括委托的简单定义,使用,好处;以及委托和Lambda的关系。所有知识点都简化为启发式的注释,应该不难理解,希望对你有帮助。
/// <summary>
/// 委托让排序代码更加优雅(易扩展,易维护)
/// 本文包含知识点:
/// 1.委托定义
/// 2.委托的好处
/// 3.Lamda(语句Lamda和委托Lambda)
/// 4.Lambda和委托的关系
/// </summary>
class Program
{
//定义内嵌委托(委托本质是一个类;编译器默认为继承自System.Delegate)
public delegate bool ComparerionHandler(int first, int second);
static void Main(string[] args)
{
int[] beforeSortList = new int[3] { 1, 3, 2 };
Console.WriteLine(string.Join(",", beforeSortList.ToArray()));
///实名委托传递参数
//int[] afterSortList = BubbleSort(beforeSortList, Asb);
///匿名方法传递参数
//int[] afterSortList = BubbleSort(beforeSortList, delegate(int first, int second) { return first > second; });
///语句Lambda传递参数(Lambda是匿名方法的简化语法)
int[] afterSortList = BubbleSort(beforeSortList, (first, second)=>{ return first > second; });
Console.WriteLine(string.Join(",", afterSortList.ToArray()));
}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//利用委托达到-->对扩展是开放的
//升序
//public static bool Asb(int first, int second)
//{
// return first > second;
//}
//降序
public static bool Desc(int first, int second)
{
return first < second;
}
//字母排序
//可扩展的其他排序……
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//冒泡排序
//利用委托达到-->对修改是封闭的
public static int[] BubbleSort(int[] list, ComparerionHandler compareion)
{
int temp;
for (int i = list.Length - 1; i >= 0; i--)
{
for (int j = 1; j <= i; j++)
{
if (compareion(list[j - 1], list[j]))
{
temp = list[j];
list[j] = list[j - 1];
list[j - 1] = temp;
}
}
}
return list;
}
}
相关文章推荐
- 委托让冒泡排序的扩展更加优雅--开闭原则的使用
- 委托让冒泡排序的扩展更加优雅--开闭原则的使用
- C#委托的简单学习:定义委托和使用、Func<int f1,out r1>、给自定义的类或数组排序(冒泡排序)
- iOS 更加优雅便捷的UIAlertView/UIAlertController封装使用
- 更加优雅的使用sublime text 3
- iOS 更加优雅便捷的UIAlertView/UIAlertController封装使用
- 更加优雅地配置Spring Securiy(使用Java配置和注解)
- 利用泛型委托增加代码的优雅 扩展ExtJS (2)
- 委托二--------使用委托实现冒泡排序
- 复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc<in T,out bb> (T arg)
- 使用委托,满足不同的场景,开放封闭原则
- 为了使对象判空更加美观,你应该使用此扩展
- C# 使用委托处理个性化扩展
- 【从码农到程序员】使用委托让代码更优雅
- 使用Castle扩展Ibatis.Net,面向接口编程-更优雅的代码
- iOS 更加优雅便捷的UIAlertView/UIAlertController封装使用
- 使用StructureMap扩展ASP.NET MVC三层结构框架系列文章总结篇(附源码下载)
- 学习实践:使用模式,原则实现一个C++自动化测试程序
- Log4j扩展使用--输出地Appender
- Mybatis Plus的相关使用教程与扩展