Fork me on GitHub

随笔分类 -  CLR via C# 技术内幕

摘要:我始终认为学习设计模式需要怀着一颗敬畏的心去探索,这一系列23种设计模式并不是一蹴而就,都是前人根据自己的经验逐渐演化出来,所以才会形成非常经典的理论。学习设计模式,我想最好的方式是根据自己的经验逐渐来推导它,这样你才理解了其中奥妙,而不是靠记忆背住了它,所以,这篇博文主要分析三种工厂模式的演变过程:来实现吧,最简单计算器代码能否复用性忘记面向过程吧,面向对象思想的引入多态,简化代码大杀器质的飞跃:简单工厂模式的运用迷途知返:拨开云雾见工厂方法暴走一击:抽象工厂+工厂方法我们先举一个最平常例子——写一个最简单的计算器,我们可能非常快就完成了第一个版本:来实现吧,简易计算器namespace 工 阅读全文
posted @ 2012-08-30 02:51 木宛城主 阅读(3629) 评论(36) 推荐(24) 编辑
摘要:Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托。何为委托匿名方法Lambda表达式扩展方法泛型委托A Simple Lambda DemoLambda表达式树何为委托委托非常好理解,类似于C++里面的函数指针(指向了一个方法),并且委托约束了待指向方法的签名(由返回类型和参数组成)。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 委托Test{ delegate bo... 阅读全文
posted @ 2012-08-27 17:25 木宛城主 阅读(23636) 评论(60) 推荐(81) 编辑
摘要:Linq为我们提供了许多扩展方法,方便我们对数据源进行操作(Where,Select...)。即使你不了解算法,也能使用Linq当回牛人。扩展方法本质并不是什么高深的技术,说白了就是一个Static静态方法。声明扩展方法步骤:创建一个名为MyHelper的类,约定了此类中的方法均是扩展方法。注意这个类必须是静态类(Static)扩展方法必须是Static静态方法第一个参数为待扩展的类型,前面标注this如果MyHelper在一个类库中,记得对其添加引用并using相关名称空间A simple exampleusing System;using System.Collections.Generi 阅读全文
posted @ 2012-08-27 13:20 木宛城主 阅读(2565) 评论(1) 推荐(3) 编辑
摘要:上一篇文章:庖丁解牛——深入解析委托和事件之后,以一题面试题来总结事件using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace CallChange{ public class Call { static void Main(string[] args) { MessageMonitoring mm = new MessageMonitoring(); ... 阅读全文
posted @ 2012-08-07 02:35 木宛城主 阅读(1271) 评论(1) 推荐(1) 编辑
摘要:这篇博文我不讲委托和事件的概念,因为大段的文字概念没有任何意义。具体想了解,委托和事件的概念可以MSDN查阅。我这篇文章的主题思路是委托如何一步步进化成事件:何为委托--->委托来实现事件--->用方法对委托的封装--->Event的add,remove方法的引入--->标准事件写法--->反编译探究竟。用几个例子以及Reflector反编译探究委托和事件的关系。不足之处,还望多多指教...何为委托:首先,委托是一种类型,是一种定义了方法签名的类型。委托可以理解为函数指针(安全),并且委托约束了方法的签名(由返回类型和参数组成),所以实例化委托时,可以将其实例与任 阅读全文
posted @ 2012-07-03 14:01 木宛城主 阅读(6111) 评论(21) 推荐(22) 编辑

multifunction lasers
访问人数