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、コンストラクターで初期化するか、をに変更しParagraphInfoますclass

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

int i;
于 2013-01-27T11:48:34.330 に答える