欢迎光临
我们一直在努力

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 则只调用有参的构造函数。最后的输出结果如下图所示。

赞(0) 打赏
未经允许不得转载:hosteons中文网 » C#构造函数

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册