代理:代理的本质是对另一个类中的函数的引用,可以分排和使用函数而无需知道它来自哪个类,只要函数满足同样的接口就可以
C#中任何事物都看作对象。
受管语言被编译成中间低层语言,使用通用语言运时(CLR)执行编译后的代码,或是进一步编译这些代码
受管语言都是垃圾自动收集的。垃圾自动收集语言负责释放不用的内存,当变量,数组或对象被检测不再被引用,就把相应的内存空间释放回系统
每个控件基本上都被声明为一个变量,并被添加到一个容器里。
C#中变量和类方法可以声明为:
Public ;可以被其他类访问
Private:没有声明默认形式,只能在类内部访问
Protected:在类和其派生类里访问
通常将所有的类变量声明为私有的,并且编写getxxx,setxxx访问函数来设置和获取数据。 实现封装原理,尽量不要让类中的变量在类外直接被访问。
若干个名字相同的方法,只要这些方法有不同的调用参数,实现重载—多态
Virtual 和 override
如果基类中有一个方法,而想在派生类中覆盖它,应该把基类中的方法声明为Virtual,它的含义是,让派生类里具有同样名字和参数标识的方法被调用,而不是调用基类中的方法。在派生类中必须用override关键字声明该方法。
基类 | 派生类 | 是否出错 |
Virtual | override | 否,执行派生类的 |
无Virtual | override | 出错 |
Virtual | 无override | 出错 |
无Virtual | 无override | 否,警告,执行派生类 |
当不能把基类方法声明为Virtual时,另外一种取代基类中方法的方式是在派生类中声明方法时使用NEW关键字,这样可以有效的隐藏基类中同一名称的方法。
例如:public new void xxxx(){}
Abstract 抽象类
1 抽象方法必须在抽象类里
2 抽象类里的方法不需要都是抽象方法,但至少要有一个抽象方法。
3 抽象类不可以被实例化,只能产生派生类。
4 一个抽象类的方法都是抽象方法,则该类不能被继承,也不能继承其他类层次结构。
5 接口的派生类必须实现接口的所有方法