接口 interface
接口定义了属性,方法和事件,接口只包含成员的声明,成员的定义是属于派生类的责任
1.接口成员是不允许有访问权限修饰符
2.接口是不能直接实例化,但是可以间接实例化
3.继承接口类,必须将接口中的成员全部实现,且成员名和接口中定义的名字保持一致
4.如果一个接口继承了其他接口,那么实现的类就需要实现所有接口成员
接口与抽象类区别:
相同点:
1.都可以被继承
2.都不能直接实例化
3.自身不提供代码实现,具体实现在子类中进行
4.派生类中必须实现未实现的方法
不同点:
1.抽象类中可以定义字段,属性,方法的实现,
但是接口中只能定义属性,事件,以及方法的声明,不能包含字段
2.单继承类,多继承接口
3.接口具有专一性,而不是多功能,否则会造成接口污染
字符串
字符串变量
stringbuilder
1.少量字符串操作,且字符串不经常发生变化时,优先使用stirng
2.stringbuilder创建后大小是可以发生变化,但是string大小是不可变的
3.stringbuilder可以自动扩容,且2倍扩容
匿名函数
提供了一种传递代码块作为委托参数的技术,匿名函数是没有方法名,只有函数主体,在匿名函数中不需要指定返回值类型,系统会在函数体中通过return语句自动推断
匿名函数只能将方法赋值给委托,通过委托调用该方法
lambda表达式
委托:(函数指针) delegate
存有对某个方法的引用的一种引用类型
访问权限 delegate 返回值类型 委托名(参数类型)
多播委托
只有相同类型的委托才可以被合并
系统提供的委托
Func:有返回值
Action:无返回值
Predicate:返回值为bool
事件 event
事件是基于委托的,事件是一种具有特殊签名的委托
观察者模式
例子:猫叫,老鼠跑,人醒