你需要理解这些操作的顺序

时间:2022-04-27 06:18:43

结构函数分为:实例结构函数,静态结构函数,私有结构函数。

实例结构函数

1、结构函数的名字与类名不异。

2、使用 new 表达式创建类的东西或者布局(例如int)时,会挪用其结构函数。并且凡是初始化新东西的数据成员。

3、除非类是静态的,否则会为没有结构函数的类,自动生成一个默认结构函数,并使用默认值来初始化东西字段。

4、结构函数可以有参数,可以以多态的形式存在多个结构函数。

例:

class CoOrds { public int x, y; // 实例结构函数(默认结构函数) public CoOrds() { x = 0; y = 0; } // 具有两个参数的结构函数 public CoOrds(int x, int y) { this.x = x; this.y = y; } // 重写toString要领 public override string ToString() { return (String.Format("({0},{1})", x, y)); } static void Main(string[] args) { CoOrds p1 = new CoOrds(); CoOrds p2 = new CoOrds(5, 3); // 使用重写ToString要领显示功效 Console.WriteLine("CoOrds #1 at {0}", p1); Console.WriteLine("CoOrds #2 at {0}", p2); Console.ReadKey(); } } /* Output: CoOrds #1 at (0,0) CoOrds #2 at (5,3) */

此中CoOrds()是结构函数,诸如此类不带参数的结构函数称为“默认结构函数”。

CoOrds(int x, int y)同样也是结构函数,结构函数可以有参数,允许多态。

静态结构函数

静态结构函数具有以部属性:

静态结构函数不使用访谒修饰符或不具有参数。

在创建第一个实例或引用任何静态成员之前,将自动挪用静态结构函数以初始化类。

不能直接挪用静态结构函数。

用户无法控制在措施中执行静态结构函数的时间。

静态结构函数的一种范例用法是在类使用日志文件且将结构函数用于将条目写入到此文件中时使用。

静态结构函数对付创建非托管代码的包装类也非常有用,,这种情况下结构函数可挪用 LoadLibrary 要领。

如果静态结构函数引发异常,运行时将不会再次挪用该函数,并且类型在措施运行地址的应用措施域的保留期内将连结未初始化。

结构函数与静态结构函数:

class TestClass { public static int x = 0; //结构函数 TestClass() { x = 1; } //静态结构函数 static TestClass() {
//第二步,执行x = 2 x
= 2; }
//第一步,措施入口Main最先执行。然后执行public static int x = 0 接着执行静态结构函数。
public static void Main(string[] args) { Console.WriteLine("x:{0}", x); //打印,x = 2 TestClass Test = new TestClass();//第三步执行结构函数,此时x = 1 Console.WriteLine("x:{0}", x); //打印 x = 1 Console.Read(); } }

Main是措施入口,当执行Main的时候,最先执行public static int x = 0

接着执行静态结构函数,此时 x = 2 

然后执行Main函数里面的内容,打印 x,此时 x = 2

初始化TestClass,然后会执行结构函数,此时 x = 1

打印 x = 1 

那么,在挪用某类的静态函数时真正的执行挨次:

1、静态变量 > 静态结构函数 > 静态函数

2、静态变量 > 静态结构函数 > 结构函数

C#高效编程改造C#代码的50个行之有效的步伐(第2版)里说到这样一段话: