• review——C# (1)静态构造函数


    FROM P102

    构造函数也可以声明为static。实例构造函数初始化类的每个新实例,而static构造函数初始化类级别的项。通常,静态构造函数初始化类的静态字段。

    --初始化类级别的项的时间:

    □在引用任何静态成员之前

    □在创建类的任何实例之前

    --静态构造函数在以下方面与实例构造函数类似

    □静态构造函数的名称必须和类名相同

    □构造函数不能返回值

    --静态构造函数在以下方面和实例构造函数不同

    □静态构造函数声明中使用static关键字

    □类只能有一个静态构造函数,且不能带参数

    □静态构造函数不能有访问修饰符

    以下即为一个静态构造函数的示例。其形式和实例构造函数相同,只是增加了static关键字。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace review
     8 {
     9     class class1
    10     {
    11         public static int z;
    12         int t;
    13         static class1()
    14         {
    15 
    16         }
    17     }
    18     class class2
    19     {
    20         public static int z;
    21         int t;
    22         static class2()
    23         {
    24             z = 1;
    25         }
    26     }
    27     class Program
    28     {
    29         static void Main(string[] args)
    30         {
    31             class1 p = new class1();
    32             Console.WriteLine(class1.z.ToString());
    33             class2 q = new class2();
    34             Console.WriteLine(class2.z.ToString());
    35             Console.Read();
    36         }
    37     }
    38 }

    输出为:

    0

    1

    通过这个例子,我们可以了解到:

    1、之前所了解到的,在自己未写构造函数时,编译器会自动加上一个无参的默认构造函数。对于这一点,静态构造函数不包含在内,即就算自己写了静态构造函数,但如果没写其他构造函数,那么编译器仍然会自动加上一个无参的默认构造函数。

    2、静态字段如果没有赋初值,也会像类字段一样,用空值作为默认值。(对于这里的int就是用0作为默认值)

    关于静态构造函数,一些其他需要注意的有:

    --类既可以有静态构造函数也可以有实例构造函数

    --如同静态方法,静态构造函数不能访问所在类的实例成员,因此也不能使用this访问器

    --不能从程序中显示调用静态构造函数,系统会自动调用它们,在:

    类的任何实例被创建之前

    类的任何静态成员被引用之前

  • 相关阅读:
    ubuntu 修改默认root及密码
    两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
    关于小米驱动程序的问题
    ubuntu下搭建lamp
    cocos2dx在ubuntu下配置声音引擎
    cocos2dx 帧动画的两种创建方式
    c++ 访问者模式(visitor pattern)
    c++ 职责链模式(Chain of Responsibility)
    c++ 状态模式(state)
    创建镜像推送至仓库
  • 原文地址:https://www.cnblogs.com/quintessence/p/9098090.html
Copyright © 2020-2023  润新知