1

我有这个 var,但我想根据语句更改它的内容,我无法让它工作,因为当我使用它时,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);
}

编辑:

我试图在框外声明变量......但也不能让它工作,我在 var days 上保留的函数是这个

    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.

可能发生的情况是您试图在它定义的块之外使用这个变量(即 afterif语句),这是days未定义的地方。

修复:在 if 之外定义变量,但您需要在那里显式类型。如果您有 ReSharper,它允许在var/explicit 类型之间轻松更改。否则,您必须自己弄清楚类型(在您的情况下是 liklye IEnumerable<DateTime>)。

于 2012-12-30T23:42:03.217 回答