代码改变世界

你正确的使用Out/Ref了吗?

2010-12-03 19:19 by 空逸云, 719 阅读, 1 推荐, 收藏, 编辑
摘要:最近在努力的学习MVC.并逐步的把Asp.net MVC应用到实际项目中去.先前.找了不少开源项目,心里一个高兴啊.一边摸索一边借鉴(抄)着别人的代码,并希望能从中吸收大牛们的思想.在CodePlex找到一个不错的开源项目.借鉴着就着手开发了.一路上风平浪静.抄代码抄得起劲.不料出现了一个让我措手不及的错误.该代码实现如下. 该方法就是获取配置文件里相关的AppSetting项,并将其转换成In... 阅读全文

【More Effective C#】Partial Class是怎样炼成的?

2010-10-28 08:14 by 空逸云, 2879 阅读, 11 推荐, 收藏, 编辑
摘要:什么是部分类(Partial Class)? C#中.我们可以利用部分类,将一个类分散到多个类文件中,这样我们就可以多个开发者同时开发某个类库,或者是扩展其他开发者发布的类库.甚至是代码生成器生成的代码,例如LINQ2SQL,ADO.NET EF等,以获取更高效的开发. Re:Class和Class File的区别.这里的类是我们平时所说的普通类-Class,如抽象类,基类,子类等等.而类文件-... 阅读全文

【More Effective C#】掩藏在Nullable<T>后的秘密

2010-10-27 08:19 by 空逸云, 2124 阅读, 7 推荐, 收藏, 编辑
摘要:对于可空类型,我们并不陌生.例如,当我们为我们的数据库生成一个实体时,例如LINQ2SQL,查看实体类中的字段,经常会发现.我们那些定义为可空的字段的类型后面都会多了个?,如int?string?char?,bool?等等.这就是今天的主角---可空类型. Nullable<T> 事实上,所有的可空类型都继承自Nullable<T>类,而编译器为了方便大众,提供了几个常用... 阅读全文

【More Effective C#】IEnumerable和IQueryable的那点事

2010-10-22 08:08 by 空逸云, 2922 阅读, 5 推荐, 收藏, 编辑
摘要:IEnumerable,IQueryable之前世今生             IEnumerable<T>在.Net2.0中我们已经很熟悉了.你想要利用Foreach迭代吗?实现IEnumerable<T>吧!你想直接做为数据源绑定到控件吗?使用IEnumera... 阅读全文

【More Effective C#】区分早期执行和晚期执行

2010-10-20 08:19 by 空逸云, 2164 阅读, 4 推荐, 收藏, 编辑
摘要:             Lambda的出现.使我们除了可以使用"古老"的命令式代码(imperative code),还可以使用声明式代码(declarative code),可以让我们作出更为灵活的实现与工程实践. 命令式代码 顾名思义,命令式代码如同... 阅读全文

【More Effective C#】Lambda表达式优化

2010-10-19 08:09 by 空逸云, 4713 阅读, 4 推荐, 收藏, 编辑
摘要:使用Lambda表达式将会造成Lambda表达式主题部分的代码重复. 若每当我们要获取一次不同工薪阶层的数据.就要重复一次.相信久经"高重用,松耦合"定律的你.肯定会想尽办法将其实现高重用,松耦合.在以前方法调用的时代.可能你会将其提炼出这样,每次我们调用的时候,将大大减少代码量,提高可复用性.然而,很不幸的是.在这里.这种重构的方式反倒降低了其可重用性.实际上,第一种方法的可... 阅读全文

【More Effective C#】LINQ表达式与方法调用的映射

2010-10-15 08:05 by 空逸云, 969 阅读, 0 推荐, 收藏, 编辑
摘要:LINQ构建在两个概念之上,一种查询语言和一系列将查询语言转换成方法调用的实现.在编译时,编译器将LINQ表达式(LINQtoobject)转换成方法调用..Net基础类库提供了两种扩展方法.System.Linq.Enumerable使用了IEnumerable<T>上扩展来实现,而System.Linq.Queryable则提供了类似的一系列IQueryable<T>上... 阅读全文

【More Effective C#】延迟求值

2010-10-14 18:30 by 空逸云, 927 阅读, 1 推荐, 收藏, 编辑
摘要:LinQ查询时,我们不会立即得到返回的数据并生成一个序列.定义该查询只是为了得到查询结果所要的执行的步骤,只有开始迭代查询时,查询才会真正的执行.这样,每次执行查询,都会从头开始执行查询的每个步骤,每次遍历/迭代都会得到全新的结果.这就叫延迟求值.相反.很多时候我们要所见即所得.定义什么查询都得到唯一的数据列表.这叫主动求值.理解延迟查询.举个不太恰当的例子.如C#的Const.我们定义了一个常量... 阅读全文

【More Effective C#】仅声明非虚的事件

2010-10-13 08:17 by 空逸云, 430 阅读, 0 推荐, 收藏, 编辑
摘要:C#除了可以声明虚方法,属性外,也可以声明虚事件.但是并不建议使用虚事件.因为这常会带来不可预测的Bug.我们定义了一个WorkerEngine类.它有一个虚事件. [代码]C#3.0中.编译器将会自动创建私有字段,以及公共add和remove方法.[代码] 由于该私有字段是编译器生成的.所以你无法通过代码访问.而且,派生事件将隐藏基类中的事件,派生类所作的工作与原始版本完全一致.即基类有一个自己... 阅读全文

【More Effective C#】扩展方法

2010-10-12 08:17 by 空逸云, 600 阅读, 0 推荐, 收藏, 编辑
摘要:C#3.0中增加了许多新特性.其中.扩展方法允许我们在不修改原有代码的基础上扩展类/接口的功能.有技巧的运用该特性.能写出有效率/易维护/美观的代码.增强现有接口  C#2.0提供了许多泛型与容器的接口和类.最常见的如IComparable<T>常常需要新建一个Comparable来进行排序比较等等..但其默认只有一个CompareTo方法.在以前.我们只能手动添加.并且很难复用代码.... 阅读全文