我有这个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;
}
}
答案 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>
)。