• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#委托的应用1:将方法作为参数传递给另一个方法[转]

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

原文:http://blog.csdn.net/susan19890313/article/details/6775461

 

长期以来,c和c++的程序员利用方法指针,将方法作为参数传给另一个方法。c#使用委托来提供相同的功能,它将方法作为对象封装起来,允许在运行时间接地绑定一个方法调用

     下面将通过冒泡排序的例子讲解委托的产生

    示例1 :该方法对一个整数数组执行升序排序

      

 产生的问题:如果想按照降序排序,有两个选择:一是复制上述代码,然后将大于运算符替换成小于运算符;二是传递一个附加的参数,指出如何排序。

如下示例2所示:

产生的问题:示例2中只考虑了两种可能的排序方式。如果想按照字母,随机或其它方式排序,BubbleSort()方法及其对应的SortType值得数量很快就会变得非常“恐怖”。

解决方法(委托的产生):为了减少重复代码的数量,可将比较方法作为一个参数传给BubbleSort()方法。为了能将方法作为参数传递,委托----一个能表示方法的数据类型--因此产生了。

示例3:利用委托将比较方法作为一个参数传给方法BubbleSort()

  可根据需要利用不同的排序方法调用方法BubbleSort():BubbleSort(items,GreaterThan),BubbleSort(items,LessThan)注意委托ComparisonHandler是一个应用类型,但不必使用new来实例化它。直接传递名称,而不是显示实例化,这是自C#2.0开始支持的一个新语法,成为委托推断。采用这个语法,编译器将根据方法名(GreaterThan)来查找方法签名,并验证它(方法GreaterThan)同方法(BubbleSort)的参数类型匹配

或BubbleSort(items,new ComparisonHandler(GreaterThan))这是C#1.0中的委托实例化的方法。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#datatable序列化后整数带有小数点或者小数点变成整数发布时间:2022-07-10
下一篇:
C#利用zxing.net操作二维码和条形码发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap