如果语句c#声明va​​r里面

时间:2012-12-30 23:36:27

标签: c# variables

我有这个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天上保留的功能就是这个

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

3 个答案:

答案 0 :(得分:8)

声明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);
}

答案 1 :(得分:2)

在if块之外声明变量(不指定值 - 在这种情况下你不能使用var,但是你必须指定类型),然后只分配一个内心的价值。

答案 2 :(得分:1)

您的代码现在没有任何问题 - 您可以使用var轻松定义可变量,或在任何块中明确指定类型,包括if

可能发生的是你试图在定义的块之外使用这个varable(即在if语句之后),days变为未定义。

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