0

私はこれを持っています:

   foreach (Software.dsBDD.list_table21 row in dataTable.Rows)
        {
            PictureBox box;
            MemoryStream stream;
            Panel panel;
            Label label;
            bool? pass;
            if (this.pass.HasValue && this.end)
            {
               pass = this.pass;
            }
            if ((pass.GetValueOrDefault() && pass.HasValue) || row.view_only)
        }

エラーとして下線が引かれた「GetValueOrDefault」の近くの変数「pass」:「割り当てられていないローカル変数 pass の使用」。同じ行の「HasValue」の近くに「pass」があり、それが割り当てられているため、この変数が割り当てられていない理由がわかりません。構文エラーはどこにある?!

4

4 に答える 4

2

変数をpass条件付きで割り当てても、考えられるすべてのシナリオで安全に割り当てられるわけではありません。@MyP3uK ソリューションを使用nullし、宣言した同じ行に割り当てます。

そうは言っても、あなたはまだ交絡の危険にさらされてpassおり、this.pass. ローカル変数には間違いなく別の名前を使用します。また、ここで選択bool?するboolことは、私にとって間違った選択のように思えます。

于 2014-04-22T16:55:27.413 に答える
0

ローカル変数passは常に割り当てられるわけではありません。ifブロックが入力された場合にのみ、コードで割り当てられます。私が知る限り、これはあなたがやろうとしていることです:

bool pass = this.pass.HasValue && this.end;
if (pass && row.view_only)
于 2014-04-22T17:03:10.453 に答える