一步一步学LINQ-泛型

原创 2013年12月06日 10:04:34

买了一本书 LINQ从基础到项目实践。记录只为督促自己学习过程

    【摘要】C#2.0 语言在很多方面扩充了原有的C#1.0的语言,提出了泛型,匿名方法的概念,使用泛型可以定义带有一个或者多个类型参数的方法或类。泛型是LINQ技术实现的基石。

我们以取两数取小的函数为列;

int Min (int a,int b)

{
     if(a<b)
        return a;
     else

        return b;
}

这个方法使用强类型的方法定义参数a,b。如果是浮点型的就需要重新定义一个方法了。我们想在.NET机制中所有的数据类型的基类是object。

object Min(object a,object b)

{

   if(a<b)

     return a;

   else

     return b;

}

不幸的是,这段代码当接受两个int 或者float类型参数时,并不能正常工作,原因是比较操作符“<”并不是dinginess在object类型上面的操作符,需要借助于一个IComparable接口来实现比较运算,于是就要修改

IComparable Min(IComparablet a,IComparable b)

{

   if(a.CompareTo(b)<0)

     return a;

   else

     return b;

}

至此上述问题算是解决了,但是带来新的问题,每次使用这段代码,都必须进行类型之间的相互转换,如下面的方法调用代码需要将方法的返回值转换成整数类型。

int a=3,b=5;

int c=(int) Min(a,b);

频繁的类型转换会消耗计算机的资源,造成程序的执行效率下降。为了根本上解决这个问题,C#2.0提出了泛型的概念,使用泛型可以将类型转换工作推迟到程序自行时由JITTER(JITTER 是.Net的一部分,它负责将IL代码转换成机器代码,C#编译器将源编译成IL代码执行),经过JITTER编译过的机器代码将不在含有类型转换的内容。

    static T Min<T>(T a, T b) where T : IComparable<T>
        {
            if (a.CompareTo(b) < 0)
                return a;
            else
                return b;
        }



版权声明:本文为博主原创文章,未经博主允许不得转载。

一步一步学ROP之linux_x86篇

0x00    本文仅解释说明蒸米大神一步一步学ROP之linux_x86篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。    阅读完这两篇文章后,我们会理解ROP(返回导向编程),DEP(堆栈...
  • jltxgcy
  • jltxgcy
  • 2016年02月19日 11:16
  • 2442

一步一步学ROP之Android ARM 32位篇

0x00    本文仅解释说明蒸米大神一步一步学ROP之Android ARM 32位篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。   0x01    第一个问题:payload = 'A'*...
  • jltxgcy
  • jltxgcy
  • 2016年02月19日 17:48
  • 1952

一步一步学springboot 一

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通...
  • u010509052
  • u010509052
  • 2017年04月23日 23:12
  • 444

一步一步学做一个CPU——1,准备工作

一,准备工作 参考: 罗老板的计算机结构与组成课程 http://xgxy.cug.edu.cn/rjgcx/lzw/COD/ Machine Structures. Spri...
  • wyq120547
  • wyq120547
  • 2014年06月17日 12:05
  • 1334

小菜一步一步学数据结构之(二)算法和算法分析

一次数学课上,老师让学生练习算数。于是让他们一个小时内算出1+2+3+4+5+6+……+100的得数。全班只有高斯用了不到20分钟给出了答案,因为他想到了用(1+100)+(2+99)+(3+98)…...
  • IT_DS
  • IT_DS
  • 2016年01月12日 13:15
  • 1000

【一步一步学NPOI】

【一步一步学NPOI】1.创建Excel 【一步一步学NPOI】2.设置单元格格式 【一步一步学NPOI】3.设置单元格宽高和边框 【一步一步学NPOI】4.字体与背景 【一步一步学NPOI】5...
  • aa2012123456
  • aa2012123456
  • 2016年02月15日 09:00
  • 408

一步一步学RMAN第一篇 进入RMAN

 哈哈~~~~~天苍苍野茫茫,三思终于又出场。要问三思来干啥,来把RMAN讲一讲。吃喝玩乐间学习,心得体会一箩筐。不管结论对与错,先把过程来分享。如有异议务必提,共同学习共提高。  en,写的还挺顺口...
  • junsisi
  • junsisi
  • 2007年09月17日 16:58
  • 3537

一步一步跟我学hadoop(1)----hadoop概述和安装配置

这几年云计算大数据很火,借这个东风,今天开始学习apache的分布式计算框架hadoop,希望不要太落后。 Apache Hadoop是一个在大型集群的商品硬件上运行的应用程序的框架。Hadoop框架...
  • wuyinggui10000
  • wuyinggui10000
  • 2015年07月05日 23:08
  • 2324

一步一步学grails:7 MVC

资源下载通过前面的工作,我们知道,Grails中,模型-视图-控制器(MVC)分别由域、gsp页面和控制器担当。其中模型(Model)就是域类,负责业务实体的存储,主要是通过GORM在实现的,GORM...
  • kmyhy
  • kmyhy
  • 2010年01月26日 09:20
  • 3060

一步一步学zedboard之六生成镜像文件

用xilinx提供的petalinux tools,petalinux-build可以生成我们所需要的各种镜像文件。...
  • zhoudengqing
  • zhoudengqing
  • 2014年11月17日 15:06
  • 762
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一步一步学LINQ-泛型
举报原因:
原因补充:

(最多只允许输入30个字)