• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#泛型委托的用法实例分析

C#泛型委托的用法实例分析

作者:永远爱好写程序 字体:[增加 减小] 来源:互联网 时间:2017-05-28

永远爱好写程序 通过本文主要向大家介绍了c#泛型实例,c#泛型的用法,c#泛型,c#泛型编程,c#泛型详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#泛型委托的用法。分享给大家供大家参考。具体分析如下:

冒泡排序大家都知道,例如一个整形数组,可以用冒泡排序来使它按从小到大的顺序排序,

但它仅限于了按整形数组来排序,如何做到按任意类型进行排序呢,例如按一个类的某个属性进行排序?

举例说明:定义一组以类MEmployee为元素的数组,按MEmployee的Salary属性进行排序,类似的可以引伸为对其他类型的比较

元素类定义:

public class MEmployee
{
  public string Name { get; private set; }
  public decimal Salary { get; private set; }
  public MEmployee(string name, decimal salary)
  {
    this.Name = name;
    this.Salary = salary;
  }
  public override string ToString()
  {
    return string.Format("{0},{1:C}", Name, Salary);
  }
  public static bool CompareSalary(MEmployee e1, MEmployee e2)
  //定义一个静态的比较函数
  {
    return e1.Salary < e2.Salary;
  }
}
</div>

比较类定义:

//BubbleSorter现在已经是一个通用的排序类了,这里委托起到了关键的作用

public class BubbleSorter
{
  //该函数接收两个参数,第一个为泛型数组参数,
  //第二个是系统自定义的Func委托,它接收两参数,返回bool类型
  public static void Sort<T>(IList<T> sortArray,Func<T,T,bool> comparison)
  {
    for (int i = 0; i < sortArray.Count; i++)
    {
      for (int j = i + 1; j < sortArray.Count; j++)
      {
        if (comparison(sortArray[j],sortArray[i]))
        //调用委托进行大小比较
        {
          T temp =sortArray[i];
          sortArray[i] = sortArray[j];
          sortArray[j] = temp;
        }
      }
    }
  }
}
</div>

测试代码:

private void button_测试委托3_Click(object sender, EventArgs e)
{
  MEmployee[] employees =
  {
    new MEmployee("Ronaldo",40000),
    new MEmployee("Rivaldo",35000),
    new MEmployee("CRonaldo",80000)
  };
  BubbleSorter.Sort<MEmployee>(employees, MEmployee.CompareSalary);
  foreach (MEmployee oTmp in employees)
  {
    Console.WriteLine(oTmp.ToString());
  }
}
</div>

测试结果如下图所示:

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#泛型委托的用法实例分析
  • C#基础之泛型委托实例教程
  • C#泛型实例详解
  • C#泛型和反射实例解析
  • C# 泛型类(函数)的实例化小例子
  • C#泛型与非泛型性能比较的实例

相关文章

  • 2017-05-28C#影院售票系统毕业设计(1)
  • 2017-05-28C#中的IDisposable模式用法详解
  • 2017-05-28使用C#实现RTP数据包传输 参照RFC3550
  • 2017-05-28C#窗体间通讯的几种常用处理方法总结
  • 2017-05-28详解如何选择使用ArrayList、HashTable、List、Dictionary数组
  • 2017-05-28浅谈C#中的常量、类型推断和作用域
  • 2017-05-28c#的datatable转list示例
  • 2017-05-28C#小程序15位转18位身份证号代码
  • 2017-05-28Silverlight将图片转换为byte的实现代码
  • 2017-05-28深入理解C♯ 7.0中的Tuple特性

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS
    • C#画笔Pen绘制曲线的方法
    • C#使用二维数组模拟斗地主
    • Winform让DataGridView左侧显示图片
    • C#常用GDI+文字操作汇总
    • C#获取网页源代码的方法
    • 分享WCF文件传输实现方法---WCFFileTransfer
    • SuperSocket入门--Telnet服务器和客户端请求处理
    • C#生成互不相同随机数的实现方法
    • C#自定义日志记录

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有