类修饰符
常用的类修饰有:
new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。
public :不限制对该类的访问
protected:只能从其所在类和所在类的子类进行访问
internal:只有其所在类才能访问
private:只有在.NET中的应用程序或者库才能访问
abstract:抽象类,不允许建立类的实例
sealed:密封类,不允许被继承
类定义中可以使用的访问修饰符组合
none or internal:类只能在当前程序中访问
abstract or internal:类只能在当前程序中访问,不能实例化,只能继承。
public abstract:类可以在任何地方访问,不能实例化,只能继承
sealed or internal sealed:类只能在当前程序中访问,不能派生,只能实例化
public sealed:类可以在任何地方访问,不能派生,只能实例化
类的默认访问修饰符
构造函数默认为public访问修饰符。
析构函数不能显示使用访问修饰符且默认为private访问修饰符。
类的成员默认访问修饰符为private;
静态类
类可以是静态的,其成员也必须全是静态的
例如
- system.Console
- system.Math
构造函数
- 静态构造函数,每个类型执行一次
- 非静态构造函数,每个实例执行一次
- 一个类型只能构建一个静态函数
- 必须无参数
- 运行class和struct的初始化代码
- 方法名与类型一致
调用类的静态函数时的执行顺序:
- 静态变量-->静态构造函数-->实例构造函数
- 静态变量-->静态构造函数-->静态函数
调用类的实例函数时的执行顺序则是:
- 非静态变量-->实例构造函数-->实例函数
class Program { public static int X = 0;//静态变量 //实例构造函数 public Program() { X = 1; } //静态构造函数 static Program() { X = 2;//第二步,执行静态构造函数 } //第一步,程序入口Main最先执行,然后执行静态变量public static int X = 0 static void Main(string[] args) { Console.WriteLine(X);//结果为2 Program Number = new Program();//第三步,执行构造函数 Console.WriteLine(X);//结果为1 } }
构造函数重载
可以用clsaa和struct重载
调用重载构造函数时使用this
解构函数
作用基本和构造函数相反,他会把字段反赋给一堆变量
方法名必须时Deconstruct,而且有一个或者多个out参数
可以被重载 可以是扩展方法
"终结器"