摘要:
Lambad表达式树:Lamabda表达式树在编译过程中,有两种方式:如果表达式的第一个参数声明为IEnumberable<T>类型,编译器会编译成IL中间代码,而当扩展方法继承自IQueryable<T>时,编译器会生成一个表达式树。var 关键字,匿名类型,对象初始化var关键字,允许我们在不知道变量类型的情况下初始化变量 如:var a = new {name='张三',sex='男'};但是初始化是必须的var a ;//编译会出错对象初始化:传统的方式是先 new 一个对象 再对对象初始化,例如Address address = 阅读全文
摘要:
概述在.NET Framework 3.5中提供了LINQ 支持后,LINQ就以其强大而优雅的编程方式赢得了开发人员的喜爱,而各种LINQ Provider更是满天飞,如LINQ to NHibernate、LINQ to Google等,大有“一切皆LINQ”的趋势。LINQ本身也提供了很好的扩展性,使得我们可以轻松的编写属于自己的LINQ Provider。本文为打造自己的LINQ Provider系列文章第一篇,主要介绍表达式目录树(Expression Tree)的相关知识。认识表达式目录树究竟什么是表达式目录树(Expression Tree),它是一种抽象语法树或者说它是一种数据结 阅读全文
摘要:
第2章 C# Language Enhancements For LINQC# 语言新特性1.Lambda 表达式2.表达式树3.var 关键字,对象 和 集合初始化 ,匿名类4.拓展方法5.部分方法6.查询表达式一、Lambda表达式Lambda表达式的引入是为了简化匿名方法的使用,而匿名方法又是为了简化委托代码写在别处,复用率又不高的代码段。书中的例子:使用命名方法(Named Methods)在C# 2.0之前,可以使用委托(delegate)来完成这项工作。比如考虑这样一个应用,对数组元素按照一定的规则进行过滤,对于通用模块,可以写成下面的样子:publicclassCommon{p. 阅读全文
摘要:
1.LINQ只能用来查询数据吗?Answer:NO,LINQ还可以用来对数据进行转换。例如把一个intl类型的数组转换成string类型,传统的方法可能需要写一个新的方法,循环遍历该数组中的每一个值,逐一进行转换。而LINQ就可以方便高效地转换。2.Var关键字的使用当变量的类型只有在编译的时候才能确定的情况下,我们可以使用var关键字来代替我们不明确的变量类型。3.Cast 或 OfType 方法的用法LINQ只能应用在实现了IEnumberalbe<T>接口的对象中,对于传统C#集合类型,可以使用Cast(OfType)方法对对象进行转换。example:ArrayList a 阅读全文
摘要:
数组:固定长度的一段内存ArrayList:可以理解为可以动态增加内存list是一种泛型链表,解决了ArrayList对于值类型需要装箱拆箱的特点。-------------------------------------数组就是值对象,它存储数据元素类型的值的一系列位置。ArrayList和List可以提供添加删除,等操作的数据。泛型中的元素类型是固定的。ArrayList可以添加任何类型的元素。 阅读全文
摘要:
查询表达式(LINQ)简介LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询 阅读全文
摘要:
结对编程(Pair Programming)是一种敏捷软件开发实践,指两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘和鼠标一起工作.the test-driven developmentthe three rules of TDD:1. You are not allowed to write any production code unless it is to make a failing unit test pass.在写完“红色”(无法通过测试)的单元测试代码之前,不允许写任何的产品代码。2. You are not allowed to write any more 阅读全文