一步一步学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;
        }



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

相关文章推荐

使用Linq的泛型功能

泛型数据访问类: 业务抽象类使用数据访问类:

Linq系列—泛型

转载之泛型的理解和使用日常生活中的事物都是有类型的,比如我们说“一个女人”,那么“女”就是这个人的类型。我们可以说“女人都是水做的”,那么听者都知道这是在说“女”这种类型的人。再比如你去肉店买肉,你可...

一步一步学Linq to sql(六):探究特性

延迟执行          IQueryable query = from c in ctx.Customers select c;     &...

一步一步学Linq to sql(四):查询句法

select   描述:查询顾客的公司名、地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers           ...

一步一步学Linq to sql(三):增删改

示例数据库   字段名 字段类型 允许空 字段说明 ID uniqueidentifier   表...

一步一步学Linq to sql(七):并发与事务

测并发          首先使用下面的SQL语句查询数据库的产品表: select * from products where categoryid=1 ...

一步一步学Linq to sql(八):继承与关系

论坛表结构          为了演示继承与关系,我们创建一个论坛数据库,在数据库中创建三个表: 1、  论坛版块分类表 dbo.Categories: 字段名 字段...

一步一步学Linq to sql(二):DataContext与实体

DataContext          DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调...
  • Baple
  • Baple
  • 2011-10-09 16:45
  • 514

一步一步学Linq to sql(一):预备知识

什么是Linq to sql          Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理...

一步一步学Linq to sql(十):分层构架的例子

项目介绍这节将要把《一步一步学Linq to sql(三):增删改》中留言簿的例子修改为使用WCF的多层构架。我们将会建立以下项目:lA,网站项目 WebSite:留言簿表现层lB,类库项目 Cont...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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