随笔分类 -  C# in depth笔记

摘要:在C# 3.0之前,我们对不同的数据源(数据集合、SQL 数据库、XML 文档等等)进行操作(查询、筛选、投影等等),会使用不同的操作方式。C# 3.0中提出了LINQ(Language Integrated Query)这个非常重要的特性, LINQ定义了一组标准查询操作符用于在所有基于.NET平... 阅读全文
posted @ 2015-03-10 21:56 田小计划 阅读(2029) 评论(1) 推荐(8) 编辑
摘要:当我们想为一个现有的类型添加一个方法的时候,有两种方式:一是直接在现有类型中添加方法;但是很多情况下现有类型都是不允许修改的,那么可以使用第二种方式,基于现有类型创建一个子类,然后在子类中添加想要的方法。当C# 2.0中出现了静态类之后,对于上面的问题,我们也可以创建静态工具类来实现想要添加的方法。... 阅读全文
posted @ 2015-03-01 17:20 田小计划 阅读(5209) 评论(2) 推荐(1) 编辑
摘要:在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化。但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响。C# 3.0中出现的Lambda表达式在不牺牲可读性的前提下,进一步简化了委托。LINQ的基本功能就是创建操作管道,以及这些操作需要的任何状... 阅读全文
posted @ 2015-02-27 22:34 田小计划 阅读(6309) 评论(3) 推荐(19) 编辑
摘要:在C# 3.0中,几乎每个新特性都是为LINQ服务的。所以,本文将介绍下面几个在C# 3.0中引入的新特性:自动实现的属性隐式类型的局部变量对象和集合初始化程序隐式类型的数组匿名类型其实这几个特性都是比较容易理解的,对于这几个特性,编译器帮我们做了更多的事情(想想匿名方法和迭代器块),从而简化我们的... 阅读全文
posted @ 2015-02-26 22:26 田小计划 阅读(1809) 评论(0) 推荐(1) 编辑
摘要:在.NET中,迭代器模式是通过IEnumerator和IEnumerable接口以及它们的泛型版本来实现的。如果某个类实现了IEnumerable接口,就说明它可以被迭代访问,调用GetEnumerator()方法将返回IEnumerator的实现,这个就是迭代器本身。在C# 1.0中,利用fore... 阅读全文
posted @ 2015-02-25 14:31 田小计划 阅读(4211) 评论(1) 推荐(4) 编辑
摘要:前面一篇文章看到了C# 2.0中通过匿名方法来简化委托,下面来看看匿名方法中的变量。闭包和不同的变量类型闭包的基本概念是:一个函数除了能够通过提供给它的参数与环境交互之外,还能同环境进行更大程度的互动。对于C# 2.0中出现的匿名方法的闭包表现为,匿名方法能使用在声明该匿名方法的方法内部定义的局部变... 阅读全文
posted @ 2015-02-23 16:15 田小计划 阅读(1163) 评论(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 田小计划 阅读(3694) 评论(1) 推荐(0) 编辑
摘要:在程序开发中,有时候需要值类型也为可空类型,比如,在数据库中,我们可以把一个日期Datetime设置为null。在C# 2.0中就出现了可空类型,允许值类型也可以为空(null),可空类型的实现基于C#泛型。可空类型基本知识可空类型的核心是System.Nullable,同时静态类System.Nu... 阅读全文
posted @ 2015-02-16 21:59 田小计划 阅读(5431) 评论(2) 推荐(2) 编辑
摘要:前面两篇文章介绍了C#泛型的基本知识和特性,下面我们看看泛型是怎么工作的,了解一下泛型内部机制。泛型内部机制泛型拥有类型参数,通过类型参数可以提供"参数化"的类型,事实上,泛型类型的"类型参数"变成了泛型类型的元数据,"运行时"在需要的时候会利用他们构造恰当的类型,通过这些类型,我们有可以实例化不同... 阅读全文
posted @ 2015-02-15 23:13 田小计划 阅读(3135) 评论(2) 推荐(4) 编辑
摘要:前一篇文章介绍了泛型的基本概念。在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断。类型约束相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束。类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类... 阅读全文
posted @ 2015-02-14 22:31 田小计划 阅读(2446) 评论(0) 推荐(3) 编辑
摘要:在C# 2.0中引入了泛型,泛型的出现解决了编码中的很多问题。相信大家一定经常用到"System.Collections.Generic"命名空间中的泛型集合类("Generic"就是泛型的意思)。在C# 1.0中,我们还在使用"System.Collections"命名空间中的非泛型集合类,那么看... 阅读全文
posted @ 2015-02-14 21:59 田小计划 阅读(2525) 评论(1) 推荐(7) 编辑
摘要:本文将介绍C#类型系统中的值类型和引用类型,以及两者之间的一些区别。同时,还会介绍一下装箱和拆箱操作。值类型和引用类型首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型。值类型:基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。 整型(sbyte、byte、char... 阅读全文
posted @ 2015-02-11 22:19 田小计划 阅读(1403) 评论(2) 推荐(4) 编辑
摘要:前面文章中介绍了委托相关的概念,委托实例保存这一个或一组操作,程序中将在某个特定的时刻通过委托实例使用这些操作。如果做过GUI程序开发,可能对上面的描述会比较熟悉。在GUI程序中,单击一个button会触发一个click事件,然后会执行一系列的操作,这一系列的操作就被存放在一个委托实例中。接下来我们... 阅读全文
posted @ 2015-02-10 22:31 田小计划 阅读(2049) 评论(0) 推荐(1) 编辑
摘要:前面一篇文章介绍了委托的基本知识,接下来就进一步研究一下委托。委托类型其实,刚开始觉得委托类型是一个比较难理解的概念,怎么也不觉得下面的"AssembleIphoneHandler"是一个类型。public delegate void AssembleIphoneHandler();按照正常的情况,... 阅读全文
posted @ 2015-02-09 21:29 田小计划 阅读(1066) 评论(0) 推荐(2) 编辑
摘要:最近在看深入理解C#,发现这是一本很不错的书,将很多C#的知识点联系了起来,更像是一本C#历史书,从C# 1一步步介绍到C# 4。所以准备一边看,一边整理读书笔记。那么就先从委托开始。委托是C#中一个非常重要的概念,从C# 1开始就有了委托这个核心概念,在C# 2和C# 3中委托又有了很多改进。通过... 阅读全文
posted @ 2015-02-08 17:40 田小计划 阅读(1251) 评论(0) 推荐(1) 编辑

Fork me on GitHub