随笔分类 - C#
摘要:一.遍历指定目录下的所有文件 public class FileUtil { /// <summary> /// 遍历 rootdir目录下的所有文件 /// </summary> /// <param name="rootdir">目录名称</param> /// <returns>该目录下的所有
阅读全文
摘要:一.什么是泛型 泛型其实就是一个不确定的类型,可以在类或方法上使用。泛型在声明期间没有明确定义类型,编译后生成一个占位符,只有在调用后传入类型,才会将该确切的类型将占位符替换掉。 二.泛型的定义 //用在类中 public class ClassName<CName> { //用在方法中 publi
阅读全文
摘要:一.前言 之前在 C# 虚函数virtual的使用 中也讲解过了virtual的用法,它主要用于在有继承关系的类中,给父类设置虚方法,让子类可以去重写该方法。本文再深入了解一下在父类中定义virtual方法,那子类重写该方法的时间点在哪。 二.例子 public class A { public A
阅读全文
摘要:一.前言 System.Object在.Net中是所有类型的基类,任何类型都可以直接或间接地继承System.Object。没有指定基类的类型都默认继承System.Object。 二.特性 所有类型都继承于System.Object,所以所有类型都具有System.Object的特性。 1.Obj
阅读全文
摘要:一.前言 在C#中,Action、Func与Predicate都是.Net类库的内置委托类型,可以让我们更加简洁便利地使用委托。 二.使用 在使用委托时,都需要定义一个委托类型,然后定义一个符合委托类型签名的方法。创建委托,并将方法与委托关联,最后调用委托。例子如下。 //定义委托类型 public
阅读全文
摘要:一.前言 delegate的意思就是委托。简单来说,在C#中delegate就是一个用来引用方法的类型,创建了委托后,在委托里添加方法的指向,就可以用委托来调用添加到委托里的方法。 二.用法 1.一般委托 //定义委托类型 public delegate string Attack(int poin
阅读全文
摘要:一.前言 在C#中,new关键字可以用来作运算符、约束、修饰符。 二.用法 1.new运算符 用于创建对象和调用构造函数。这个new的使用是语法基础,没什么需要了解的,用过几遍都知道。 public class A { public A() { Console.WriteLine("初始构造函数")
阅读全文
摘要:一.简介 abstract意思是抽象。在C#中,abstract修饰符只用在两个地方,一是修饰类,二是修饰方法。被abstract定义的类或方法,叫做抽象类或抽象方法。 在将abstract修饰符的用法时,可以直接讲抽象类的用法,因为抽象方法必须存在于抽象类之中。 二.例子 public abstr
阅读全文
摘要:一.简介 override意思是重写。它是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同,用于拓展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现,提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。 二.例子 override重写抽象方法。
阅读全文
摘要:一.前言 sealed的中文意思就是密封。在C#中,sealed修饰符用在两个方面,一是修饰类,二是修饰方法。 二.用法 1.修饰类 sealed应用于某个类后,可以阻止该类被其它类继承。如下面的示例,类B可以继承类A,但没有类可以继承类B。 class A {} sealed class B :
阅读全文
摘要:一.前言 在使用C#开发的过程中,我们经常可以看到virtual关键字,这个关键字具体的使用场景是有类做实现继承,父类通过virtual设置虚方法,子类可以通过override来重写该方法。 二.编译原理 一般函数在编译时就静态地编译到执行文件中,其相对地址在程序运行期间是不发生变化。虚函数在编译期
阅读全文
摘要:一.介绍 解释器模式(Interpreter Pattern)。属于行为型模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 二.实现 举个例子,有一个中英文翻译系统可以翻译一句英文的话,每个英文单词对应的是去翻译出中文,而标点符号输出的还是标点符
阅读全文
摘要:一.介绍 中介者模式(Mediator Pattern)。属于行为型模式。用一个中介对象来封装一序列的对象交互。中介者使得各对象之间不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 二.实现 举个例子,用户聊天,A用户发了消息,B用户就能收到。B用户发的消息,A用户可以收到
阅读全文
摘要:一.介绍 访问者模式(Visitor Pattern)。属于行为型模式。表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 二.实现 举个例子,如果有元素A、B类,想调用这些元素中的Print方法,很简单地,只要实例化去调用就可以。 publi
阅读全文
摘要:一.介绍 状态模式(State Pattern)。属于行为型模式。当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 二.实现 举个例子,用银行账户的状态来实现状态模式,状态分为两种,一种是正常有钱可以取的状态,一种是已经透支了不能再取钱的状态。每次存钱取钱都会刷新一下这个账户
阅读全文
摘要:一.介绍 备忘录模式(Memento Pattern)。属于行为型模式。它在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 二.实现 备忘录顾名思义就是可以存储多个信息的工具。在该模式下,如果一个对象出现了多种状态,通过管理者的集
阅读全文
摘要:一.介绍 命令模式(Command Pattern)。属于行为型模式。它将请求封装成一个对象,从而使你可以用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 二.实现 举个例子,老板想做一个系统,那老板的话就相当于一个命令,而这个命令又不可能直接说给员工(老板一般都是神
阅读全文
摘要:一.介绍 责任链模式(Chain of Responsibility Pattern)。属于行为型模式。它使多个对象都有机会处理请求,从而避免发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 二.实现 举个例子,在一所银行里,有几个级别的员工,柜
阅读全文
摘要:一.介绍 迭代模式(Iterator Pattern)。属于行为型模式。它提供一种方法顺序访问聚合对象中各个元素,而又不暴露该对象的内部表示。 二.实现 迭代模式是针对聚合对象使用的,一般使用聚合,有增删改操作,也需要进行遍历操作。如果聚合对象全实现这些功能,那根据单一职责原则,聚合对象就承担了太多
阅读全文
摘要:一.介绍 观察者模式(Observer Pattern)。属于行为型模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 二.实现 举个例子,我们开车时,当踩油门加速的时候,显示器上会显示车速,而超速
阅读全文