首页 > 解决方案 > 如何将多个构造函数添加到结构?

问题描述

我有以下代码:

struct test {
    public int a;
    public int b;

    public test(int a) {
        this(a, null);
    }

    public test(int a, int b) {
        this.a = a;
        this.b = b;
    }
}

我希望test结构有两个不同的构造函数,一个只需要传入a,另一个可以传入ab.

此代码不起作用,因为它失败并出现一些错误:

对于public test(int a) {线路:

在将控制权返回给调用者之前,必须完全分配字段“test.a”

在将控制权返回给调用者之前,必须完全分配字段“test.b”

对于这this(a, null);条线:

应为方法名称。

在分配所有字段之前,不能使用“this”对象

标签: c#structconstructor

解决方案


struct test {
    public int a;
    public int b;

    public test(int a) : this(a, 0) { }
    
    public test(int a, int b = 0) {
        this.a = a;
        this.b = b;
    }
}

您不能将 null 分配给 int。此外,您的变量名称不明确。您可以使用可选参数来实现您要查找的内容。或链接构造函数。


推荐阅读