摘要: 一、泛型 假设我要写个公用的输出传入参数的方法(不用泛型),因为万物皆对象的理由,我先定义一个方法show(object obj),如下面所示: 执行这个方法 如果传入的是值类型,值类型转换为引用类型,我们知道会发生装箱,这是对性能的损害,想想如果是个集合,就得多次执行装箱、拆箱操作。如ArrayL阅读全文
posted @ 2017-06-18 21:30 Rich.W 阅读(575) 评论(0) 编辑
摘要: 一、Parallel类 Parallel类提供了数据和任务的并行性; 二、Paraller.For() Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义。 在For()方法中,前两个参数是固定阅读全文
posted @ 2017-06-13 19:50 Rich.W 阅读(1410) 评论(0) 编辑
摘要: 一、Action<T>和Func<T>委托 除了上篇描述的为每个参数和返回类型定义一个新委托类型之外,还可以使用Action<T>和Func<T>委托。通过T的标示,我们可以知道这是两个泛型委托。 二、Action<T> 其中Action<T>委托表示引用一个void返回类型的方法。这个委托存在不同阅读全文
posted @ 2017-05-30 22:38 Rich.W 阅读(98) 评论(0) 编辑
摘要: 一、委托 把方法作为参数传给其他方法; 二、声明委托 在C#中使用一个类时,分两个阶段。首先,需要去定义一个类,然后实例化类的一个对象(只需要静态方法除外)。 使用委托也需要经过这2个步骤,首先必须定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托表示哪种类型的方法。然后,必须创建该委托阅读全文
posted @ 2017-05-30 22:07 Rich.W 阅读(81) 评论(0) 编辑
摘要: 一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 二、模式中的角色 Abstraction:定义抽象类的接口;维护一个指向Implementor类型对象的指针; RefinedAbstraction:扩充由Abstraction定义的接口; Implementor:定义具体行为,具体阅读全文
posted @ 2017-05-21 22:00 Rich.W 阅读(39) 评论(0) 编辑
摘要: 一、概述 将一个类的接口转换为客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作; 二、模式中的角色 Target:定义客户端使用的与特定领域相关的接口; Clinet:与符合Target接口的对象协同; Adpatee:定义一个已经存在的接口,这个接阅读全文
posted @ 2017-05-17 23:43 Rich.W 阅读(35) 评论(0) 编辑
摘要: 一、跨浏览器的事件对象 二、右键菜单demo阅读全文
posted @ 2017-05-13 15:13 Rich.W 阅读(21) 评论(0) 编辑
摘要: 一、序 定义函数的方式有两种:一种是函数声明,另一种就是函数表达式; 1.1 函数声明 关于函数声明,它有一个重要特征就是函数声明提升,意思就是在执行代码之前会先读取函数声明。这就意味着可以把函数放在调用它的语句后面。如下所示: 1.2 函数表达式 这种形式看起来好像是常规的变量赋值语句,即创建一个阅读全文
posted @ 2017-05-04 23:39 Rich.W 阅读(120) 评论(0) 编辑
摘要: 一、总结 创建型模式抽象了实例化的过程;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。 在这些模式中有两个不断出现的主旋律。第一,它们都将关于该系统使用哪些具体的类的信息封装起来。第二,它们隐藏了这些类阅读全文
posted @ 2017-04-23 16:43 Rich.W 阅读(41) 评论(0) 编辑
摘要: 一、概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 二、模式中的角色 Prototype:声明一个克隆自身的接口; ConcretePrototype:实现一个克隆自身的操作; 三、UML类图 四、代码实现 五、实际应用 在.NET里,那个原型抽象类Prototype是用不着阅读全文
posted @ 2017-04-23 16:08 Rich.W 阅读(133) 评论(0) 编辑