1

私はこの変数を持っていますが、ステートメントに応じてその内容を変更したいのですが、それを使用すると、ステートメントが真であってもVSは宣言されていないと言うため、動作させることができません...

if (DateTime.Today.Day > 28 && DateTime.Today.Day < 2)
{
    var days = GetDaysLikeMe(DateTime.Today).Take(50).Where(d => d.Date.Day > 28 && d.Date.Day < 2).Take(4);
}
else
{
    var days = GetDaysLikeMe(DateTime.Today).Take(50).Where(d => d.Date.Day < 28 && d.Date.Day > 2).Take(4);
}

編集:

ボックスの外側で変数を宣言しようとしました...しかし、どちらも機能しません。変数の日に保持する関数はこれです

    public IEnumerable<DateTime> GetDaysLikeMe(DateTime currentDate)
    {
        DateTime temp = currentDate;
        while (true)
        {
            temp = temp.AddDays(-7);
            yield return temp;
        }
    }
4

3 に答える 3

10

if ステートメントのスコープ外で変数を宣言します。

IEnumerable<DateTime> days;

if (DateTime.Today.Day > 28 && DateTime.Today.Day < 2)
{
    days = GetDaysLikeMe(calendario.Value.Date).Take(50).Where(d => d.Date.Day > 28 && d.Date.Day < 2).Take(4);
}
else
{
    days = GetDaysLikeMe(calendario.Value.Date).Take(50).Where(d => d.Date.Day < 28 && d.Date.Day > 2).Take(4);
}
于 2012-12-30T23:39:29.557 に答える
2

if ブロックの外側で変数を宣言し (値を割り当てずに -varこの場合は使用できませんが、型を指定する必要があります)、内部でのみ値を割り当てます。

于 2012-12-30T23:39:15.203 に答える
1

現在のコードに問題はありません。変数を簡単に定義しvarたり、ブロック内で型を明示的に指定したりできますif

発生する可能性があるのは、この変数が定義されているブロックの外側 (つまり、ifステートメントの後) でこの変数を使用しようとしているということですdays

修正: if の外で変数を定義しますが、明示的な型が必要です。varReSharper をお持ちの場合は、 /explicit タイプを簡単に変更できます。それ以外の場合は、自分でタイプを理解する必要があります(あなたの場合は liklye ですIEnumerable<DateTime>)。

于 2012-12-30T23:42:03.217 に答える