前面一篇文章提到过 数组越界行为,虽然编译器为我们做了大量的检查工作让我们避免这些错误。 但是我觉得还是有必要模拟一下数组越界,感受一下这个错误。 那么对于.NET来说我们怎么来模拟数组越界呢?   一、 [VS]&n...
阅读(29) 评论(0)
一、定义 请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 二、实例 其实和状态模式类似,只是...
阅读(79) 评论(0)
一、定义 适配器模式——使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用。 二、实例:客户端对于发送数据的接口不能直接使用,但是里面的逻辑重写又会重复...
阅读(101) 评论(0)
一、定义 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用...
阅读(96) 评论(0)
一、定义 前面讲到的工厂方法。每个工厂对应着一类产品。抽象工厂就是工厂方法中不再是针对一种产品,而是多个不同类型的产品。 工厂方法和抽象方法的区别—手工的图,字有点丑。 二、实例 服务类型接口:也可以比作"系列A...
阅读(110) 评论(0)
一、定义 第一篇简单工厂方法讲到,后续添加服务的时候会直接修改工厂类,因为他控制了实例化哪个类。 工厂方法,就让实例化推迟到了子类。怎样推迟?在子类中实例化呗。 二、实例 之前的服务不变,将简单的工厂的工厂类拆分成,每个case...
阅读(84) 评论(0)
一、定义 定义无需赘述,根据参数判断实例化哪个对象。替换让人眼花缭乱的if语句。 二、实例代码 定义接口: public interface IService { } BL和WCF继承并实现: publi...
阅读(71) 评论(0)
目录: 建议13:为类型输出格式化字符串 建议14:正确实现浅拷贝和深拷贝 建议15:使用dynamic来简化反射实现   一、建议13:为类型输出格式化字符串 有些类型需要我们根据业务需求提供字符串的格式...
阅读(73) 评论(0)
目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals   一、建议10:创建对象时需要考虑是否实现比较器 比较一下基本工资: class Salary : ICom...
阅读(111) 评论(0)
目录: 建议7:将0值作为枚举的默认值 建议8:避免给枚举类型的元素提供显示的值 建议9:习惯运算符重载   一、建议7:将0值作为枚举的默认值 允许使用的枚举类型有:byte、sbyte、short、us...
阅读(109) 评论(0)
目录: 建议4:TryParse比Parse好 建议5:使用int?确保值类型也可以为null 建议6:区别 readonly 和 const 的用法    一、建议4:TryParse比Parse...
阅读(115) 评论(0)
目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as   建议一、正确操作字符串 1、确保尽量少的装箱 static void Main(string[] args...
阅读(74) 评论(0)
  目录 线程的几种状态 基础线程 前台线程、后台线程 线程池概念理解 一、线程的几种状态  我们所说的基础线程就是通过Thread类显示创建的线程。可以大体了解一下Thread类相关的成员:...
阅读(88) 评论(0)
目录: 序列化、反序列化 类型序列化的前提 格式化器序列化原理 控制序列化和反序列化   一、序列化、反序列化 字节流序列化是将一个对象转换成一个字节流的过程。 字节流反序列化是...
阅读(93) 评论(0)
目录: 上篇:程序集加载与反射(一):基础篇 Demo:下载 一、Demo 下面这个Demo,使用了策略模式模仿了一下插件机制。我们举个一邮件发送的例子: 1、一个策略类库:Strategy,里面定义了邮件需要实现...
阅读(75) 评论(0)
1 2 下一页共2页  到第