• class 关键字 interface 接口 internal 当前项目内部访问 abstract 抽象类型 sealed密封类型
  • System.Object 所有的类都继承自System.Object
  • 接口和抽象类
    • 相似:1.都包含可由派生类继承的成员 2.都不能实例化,但可以声明这些类型的变量
    • 区别:1.派生类只能继承一个基类,即只能直接继承一个抽象类(但可以用一个继承链包含多个抽象类 2.类可以使用多个接口 (这两种效果是类似的)
    • 抽象类可以拥有抽象成员(没有代码体,且必须在派生类中实现,否则派生类本身必须也是抽象的)和非抽象成员(拥有代码体,也可以是虚拟的,以便在派生类中重写) private, protected, internal,protected internal,
    • 接口成员必须都在使用接口的类上实现--没有代码体 public
    • 接口中不能包含字段,构造函数,析构函数,静态成员或常量。
  • 浅度和深度复制(11章)
  • 静态类与非静态类
    • 静态成员
      • 1:非静态类可以包含静态的方法、字段、属性或事件;
      • 2:无论对一个类创建多少个实例,它的静态成员都只有一个副本(体现在在A实例改变了某个静态变量的值将影响所有的实例);
      • 3:静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量;
      • 4:静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员;
      • 5:虽然字段不能声明为 static const,但 const 字段的行为在本质上是静态的。这样的字段属于类,不属于类的实例。因此,可以同对待静态字段一样使用 ClassName.MemberName 表示法来访问 const 字段;
      • 6:C# 不支持静态局部变量(在方法内部定义静态变量)。
    • 非静态类
      • 非静态类里即可有静态成员,也可以有非静态成员。
      • 非静态里的静态方法可直接调用即 :<非静态 类名.静态方法 >
      • 非静态里的非静态方法需要实例化后才能被调用,格式如下:<非静态类名   变量=new 非静态类名();>
原文地址:https://www.cnblogs.com/liuke-1264746554/p/10599225.html