C#构造函数

  • 内容
  • 评论
  • 相关

引用类型的实例构造函数不能被继承(不过,可以通过 base 关键字调用父类的构造函数),它负责初始化类型的实例字段。

对于静态字段,由静态构造函数负责。当然,也可以在实例构造函数中为静态成员赋值,但是,当之后更改这个值,再创建一个新的实例时,你会发现值又被实例构造函数改回去了。

所以,通常在静态构造函数中为静态成员赋值 (因为它只会执行一次)。

如果类型没有定义任何构造函数,C# 会生成一个无参实例构造函数(.ctor),它遍历类 型中所有的成员,并将它们设置为默认值。

可以声明多个不同的构造函数。可以利用 this 关键字来调用其他构造函数。例如:

public class AClass
{
    public int i;
    public static int j;
    static AClass()
    {
        j = 2;
        Console.WriteLine("静态构造函数");
    }
    public AClass() : this(5)
    {
        Console.WriteLine("实例构造函数");
    }
    public AClass(int i)
    {
        this.i = i;
        Console.WriteLine("有参数的实例构造函数");
    }
}

在这个例子中,我们使用下面的代码新建实例:

static void Main(string[] args)
{
    var a = new AClass();
    Console.WriteLine(a.i);

    var b = new AClass(10);
    Console.WriteLine(b.i);
    Console.ReadKey();
}

根据规则,创建 a 时,调用无参的构造函数。但无参的构造函数调用了有参的构造函数,所以,先执行有参的构造函数,将 i 设置为 5,再执行无参的构造函数。

创建 b 则只调用有参的构造函数。最后的输出结果如下图所示。

本文标题:C#构造函数

本文地址:https://www.hosteonscn.com/5014.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注