3

私のコードでは、このようにDatetimeを初期化しました

 DateTime myDate;

しかし、アクセスしようとすると、このエラーが発生しました。

アクセスする前にローカル変数「myDate」が初期化されていない可能性があります

ここで私は私の日付を初期化しましたか?

4

1 に答える 1

19

宣言しましたが、値を指定しませんでした。「確実に割り当てられる」まで、ローカル変数を読み取ることはできません。簡単な例:

DateTime myDate = DateTime.UtcNow; // is assigned

すぐに値を指定する必要はありません...たとえば、値があるというあいまいさを残さない分岐などを含め、読み取りを試みる前にいつでも値を指定できます。たとえば、次のようになります。

DateTime myDate;
//....
if(condition) {
    myDate = DateTime.UtcNow;
} else {
    myDate = GetDateFromSomewhereElse();
}
Console.WriteLine(myDate);

対照的に、フィールド(クラス変数) はすべてゼロの値に自動的に初期化され、オブジェクトの作成から「確実に割り当てられた」ものとして扱われます。

于 2012-08-21T05:43:19.383 に答える