在一个基本数据类型的方法中求解最大值或者最小值是一件很方便,同时也是很简单的事。但是如果你想复用这个方法,我们就需要使用到泛型编程的概念了。这就好比是C++中的模板函数,或者java中的泛型操作。相比而言。C#的语法和Java的语法表现出了惊人的一致。
下面我们先看一个简单的例子吧


 public static object getMinValue(object[] array){IComparable min = (IComparable)array[0];foreach(object i in array){if (((IComparable)i).CompareTo(min)<0){min = (IComparable)i;}}return min;}

注意:这里使用了static来修饰该方法,是因为我直接在static void Main()方法中调用了这个方法,所以才加的这个关键字。


但是这样做看似合理也正确,却会报出类型转换错误的异常。所以这仍然是行不通的。我们需要借助于where T :约束条件来进行处理
所以修改成如下代码:

 public static  T getMinValue<T>(T[] array) where T: IComparable<T>{T min = array[0];foreach(T i in array){if ((i).CompareTo(min)<0){min = i;}}return min;}

好了,这次在运行程序。就不会报出错误了。


总结:
IComparable接口定义了一个CompareTo的方法,这样就可以让object类型的值进行比较了。
优点:使得C#泛型编程更加完善,实现了代码一次编写的良好的复用效果!

C#中的泛型化方法的实现相关推荐

  1. Anders Hejlsberg谈C#、Java和C++中的泛型

    Anders Hejlsberg谈C#.Java和C++中的泛型 [翻译] lover_P 2004-03-25 ------------------------------------------- ...

  2. [转]Anders Hejlsberg谈C#、Java和C++中的泛型

    [翻译] lover_P 2004-03-25 原著:Bill Venners.Bruce Eckel  2004.2.26 原文:http://www.artima.com/intv/generic ...

  3. 【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)

    C++ 泛型编程 中的泛型算法和STL(sort,find,find) 1. 引言 1.1 简述泛型编程和STL的重要性 1.2 介绍泛型算法的基本概念 2. STL中的泛型算法 2.1 定义及主要特 ...

  4. Java中创建泛型数组

    Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...

  5. 技术图文:C#语言中的泛型 II

    C#语言中的泛型 II 知识结构: 6. 泛型接口 泛型类与泛型接口结合使用是很好的编程习惯,比如用IComparable<T>而非IComparable,以避免值类型上的装箱和拆箱操作. ...

  6. 技术图文:C#语言中的泛型 I

    C#语言中的泛型 I 知识结构: 1. 泛型概述 泛型广泛应用于容器(Collections)和对容器操作的方法中. 从 .NET Framework2.0 开始,微软提供了一个新的命名空间Syste ...

  7. Java中的泛型 --- Java 编程思想

    前言 ​ 我一直都认为泛型是程序语言设计中一个非常基础,重要的概念,Java 中的泛型到底是怎么样的,为什么会有泛型,泛型怎么发展出来的.通透理解泛型是学好基础里面中非常重要的.于是,我对<Ja ...

  8. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  9. java中什么泛型_【原创】java中的泛型是什么,有什么作用

    泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方 ...

最新文章

  1. erlang mnesia数据库简单应用
  2. ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
  3. AngularJS 资源和开发教程
  4. DevOps和持续交付
  5. Android优美代码赏析:Snake游戏分析
  6. npm stripts 使用指南
  7. linux系统MSL时间如何查,Linux和Windows系统修改MSL的值
  8. 常用PC,移动浏览器User-Agent大全
  9. 危与机并存 保险业如何走好线上线下业务并举转型之路?
  10. Word2007 无法给尾部空格加下划线
  11. 致敬达叔!Python带你回顾达叔出演过的作品与合作过的演员
  12. 【杂货铺】中国房屋种类
  13. 会声会影2020软件新增功能详情
  14. VC++年月日时间和64位时间的使用及相互转换(附源码)
  15. TPshop项目步骤(一)
  16. 《基于物联网的车内安防系统项目需求说明书+系统概要说明+系统详细说明》
  17. 学生信息管理系统——实时错误‘94’
  18. ssm+JSP计算机毕业设计重庆工商大学公寓信息管理系统x49c1【源码、程序、数据库、部署】
  19. 推荐Paypal的两个数据职位(实习/社招)
  20. voc2012数据集下载链接

热门文章

  1. 衡量模块独立性的两个定性标准
  2. 数据库为date型,而前端要显示String型,问题解决
  3. 系统提示一个程序正在被另一个程序调用,如何知道是被哪个程序调用
  4. 智商情商哪个重要_《所谓逆商高,就是心态好》:逆商,比情商和智商更重要...
  5. antd 能自适应吗_一种能自适应识别母线运行方式的备自投装置应用探讨
  6. php中常用的运算符和表达式有哪几种,php 运算符与表达式详细介绍
  7. 冯诺依曼机器人_冯·诺依曼型计算机的五大组成部分是什么?
  8. c语言 画函数,c语言绘制函数曲线
  9. 深度优化LNMP之PHP
  10. 字节跳动被爆商业化部门大量裁员