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

我有这个var,但是我想根据语句改变它的内容,我不能让它工作,因为当我使用它时,VS说它还没有声明,即使声明是真的……

if (DateTime.Today.Day > 28 && DateTime.Today.Day  d.Date.Day > 28 && d.Date.Day  d.Date.Day  2).Take(4); } 

编辑:

我试图在框外面声明变量…但是也不能让它工作,我保持var天的function是这个

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

声明if语句范围之外的变量:

 IEnumerable 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); } 

在if块之外声明变量(不指定值 – 在这种情况下你不能使用var ,你必须指定类型),然后只在里面给它赋值。

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

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

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