Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在if语句c中声明var#_C#_Variables - Fatal编程技术网

C# 在if语句c中声明var#

C# 在if语句c中声明var#,c#,variables,C#,Variables,我有这个变量,但是我想根据语句改变它的内容,我不能让它工作,因为当我使用它时,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(

我有这个变量,但是我想根据语句改变它的内容,我不能让它工作,因为当我使用它时,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);
}
if(DateTime.Today.Day>28&&DateTime.Today.Day<2)
{
var days=GetDaysLikeMe(DateTime.Today).Take(50).其中(d=>d.Date.Day>28&&d.Date.Day<2).Take(4);
}
其他的
{
var days=GetDaysLikeMe(DateTime.Today).Take(50).其中(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;
        }
    }
public IEnumerable GetDaysLikeMe(日期时间currentDate)
{
日期时间温度=当前日期;
while(true)
{
温度=温度增加天数(-7);
屈服返回温度;
}
}

在if块外声明变量(不赋值-在这种情况下不能使用
var
,但必须指定类型),然后只在if块内为其赋值。

在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);
}
i数日;
如果(DateTime.Today.Day>28&&DateTime.Today.Day<2)
{
days=GetDaysLikeMe(calendario.Value.Date).Take(50).其中(d=>d.Date.Day>28&&d.Date.Day<2).Take(4);
}
其他的
{
days=GetDaysLikeMe(calendario.Value.Date).Take(50).其中(d=>d.Date.Day<28&&d.Date.Day>2).Take(4);
}

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

可能发生的情况是,您试图在定义的块之外使用此变量(即在
if
语句之后,
days
变为未定义的块)


修正:在if之外定义变量,但需要在那里显式类型。如果您有ReSharper,它允许在
var
/显式类型之间轻松地进行更改。否则,您必须自己确定键入方式(在您的情况下,它可能是e
IEnumerable
)。

您打算在哪里使用它?在
if
else
块的内部?不要在if语句中声明变量,大多数编译器应该阻止您这样做。首先声明变量,然后根据语句对其进行更改。
DateTime.Today.Day
怎么可能同时大于28而小于2?可能需要使
IEnumerable days
Ye与Cory correction和您的答案一起工作!!非常感谢。