0

我正在编写以下代码,并且我创建的任何变量都拖了一个错误:

struct ParagraphInfo
    {
        public ParagraphInfo(string text)
        { 

        }

        int i;
    }

错误是:

字段'ConsoleApplication15.Program.ParagraphInfo.i'

必须在控制权返回给调用者之前完全分配

构造函数被强调为错误的来源,一旦我删除它,错误就消失了。

到底是怎么回事?

4

2 回答 2

1

当编译器为你生成一个构造函数时struct,结构中的所有内容都被初始化:

struct ParagraphInfo {
    int i;
}

ParagraphInfo pi = new ParagraphInfo();
// pi.i == 0 here.

如果您创建自己的构造函数,这也是您需要确保的保证。这将编译:

struct ParagraphInfo {
    int i;
    public ParagraphInfo(string text) {
        i = 0; // you've guaranteed i is initialized.
    }
}

或者..

struct ParagraphInfo {
    int i;
    public ParagraphInfo(string text) : this() {

    }
}

您可以使用this(),因为默认构造函数会为您进行初始化。

于 2013-01-27T11:43:10.323 回答
0

Struct类型的构造函数中,必须分配所有字段值。因此,在您的构造函数中初始化i或更改ParagraphInfoclass.

public ParagraphInfo(string text)
{     
    this.i = 0;
}

int i;
于 2013-01-27T11:48:34.330 回答