摘要: 在C# 3.0之前,我们对不同的数据源(数据集合、SQL 数据库、XML 文档等等)进行操作(查询、筛选、投影等等),会使用不同的操作方式。C# 3.0中提出了LINQ(Language Integrated Query)这个非常重要的特性, LINQ定义了一组标准查询操作符用于在所有基于.NET平... 阅读全文
posted @ 2015-03-10 21:56 田小计划 阅读(2016) 评论(1) 推荐(8) 编辑
摘要: 当我们想为一个现有的类型添加一个方法的时候,有两种方式:一是直接在现有类型中添加方法;但是很多情况下现有类型都是不允许修改的,那么可以使用第二种方式,基于现有类型创建一个子类,然后在子类中添加想要的方法。当C# 2.0中出现了静态类之后,对于上面的问题,我们也可以创建静态工具类来实现想要添加的方法。... 阅读全文
posted @ 2015-03-01 17:20 田小计划 阅读(5186) 评论(2) 推荐(1) 编辑
摘要: 在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化。但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响。C# 3.0中出现的Lambda表达式在不牺牲可读性的前提下,进一步简化了委托。LINQ的基本功能就是创建操作管道,以及这些操作需要的任何状... 阅读全文
posted @ 2015-02-27 22:34 田小计划 阅读(6268) 评论(3) 推荐(19) 编辑
摘要: 在C# 3.0中,几乎每个新特性都是为LINQ服务的。所以,本文将介绍下面几个在C# 3.0中引入的新特性:自动实现的属性隐式类型的局部变量对象和集合初始化程序隐式类型的数组匿名类型其实这几个特性都是比较容易理解的,对于这几个特性,编译器帮我们做了更多的事情(想想匿名方法和迭代器块),从而简化我们的... 阅读全文
posted @ 2015-02-26 22:26 田小计划 阅读(1804) 评论(0) 推荐(1) 编辑
摘要: 在.NET中,迭代器模式是通过IEnumerator和IEnumerable接口以及它们的泛型版本来实现的。如果某个类实现了IEnumerable接口,就说明它可以被迭代访问,调用GetEnumerator()方法将返回IEnumerator的实现,这个就是迭代器本身。在C# 1.0中,利用fore... 阅读全文
posted @ 2015-02-25 14:31 田小计划 阅读(4143) 评论(1) 推荐(4) 编辑
摘要: 前面一篇文章看到了C# 2.0中通过匿名方法来简化委托,下面来看看匿名方法中的变量。闭包和不同的变量类型闭包的基本概念是:一个函数除了能够通过提供给它的参数与环境交互之外,还能同环境进行更大程度的互动。对于C# 2.0中出现的匿名方法的闭包表现为,匿名方法能使用在声明该匿名方法的方法内部定义的局部变... 阅读全文
posted @ 2015-02-23 16:15 田小计划 阅读(1150) 评论(0) 推荐(1) 编辑
摘要: 前面的文章介绍过,C# 1.0中出现委托这个核心概念,在C# 2.0中,委托得到了很大的改进。C# 2.0中委托的改进为C# 3.0中的新特性提供了铺垫,当我们了解了匿名方法后,Lambda的学习就会变得相对容易。下面就看看C# 2.0中委托的改进。方法组转换在C# 1.0中,如果要创建一个委托实例... 阅读全文
posted @ 2015-02-17 22:18 田小计划 阅读(3556) 评论(1) 推荐(0) 编辑
摘要: 在程序开发中,有时候需要值类型也为可空类型,比如,在数据库中,我们可以把一个日期Datetime设置为null。在C# 2.0中就出现了可空类型,允许值类型也可以为空(null),可空类型的实现基于C#泛型。可空类型基本知识可空类型的核心是System.Nullable,同时静态类System.Nu... 阅读全文
posted @ 2015-02-16 21:59 田小计划 阅读(5379) 评论(2) 推荐(2) 编辑
摘要: 前面两篇文章介绍了C#泛型的基本知识和特性,下面我们看看泛型是怎么工作的,了解一下泛型内部机制。泛型内部机制泛型拥有类型参数,通过类型参数可以提供"参数化"的类型,事实上,泛型类型的"类型参数"变成了泛型类型的元数据,"运行时"在需要的时候会利用他们构造恰当的类型,通过这些类型,我们有可以实例化不同... 阅读全文
posted @ 2015-02-15 23:13 田小计划 阅读(3124) 评论(2) 推荐(4) 编辑
摘要: 前一篇文章介绍了泛型的基本概念。在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断。类型约束相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束。类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类... 阅读全文
posted @ 2015-02-14 22:31 田小计划 阅读(2424) 评论(0) 推荐(3) 编辑
Fork me on GitHub