尝试返回布尔值时使用未分配的局部变量

时间:2019-01-10 17:54:27

标签: c#

因此,我需要返回一个变量,该变量检查用户输入的日期是否在我给定的2个日期之间。目前,我没有执行用户部分。

我尝试检查并返回变量,但给出了以上错误

public bool IsInPeakSeason(DateTime date)
    {
        DateTime date1 = new DateTime(2019, 06, 15);
        DateTime date2 = new DateTime(2019, 08, 15);
        DateTime dateCheck >= date1 && dateCheck <date;
        return date >= date1 && date < date2;
    }

如果日期在给定日期之间或不在给定日期之间,我想返回true或false

2 个答案:

答案 0 :(得分:1)

您得到的错误是您尝试在其初始分配中使用dateCheck,这是不允许的。换句话说,您无法执行类似int number = number + 1;的操作,因为尚未分配赋值右侧的number。当然,有问题的行中还必须包含其他错别字,因为它根本不会编译。

无论如何,您实际上根本不需要该行(该变量在其他任何地方都没有使用)。如果删除它,您的代码应该可以按预期工作。

我要进行的一项更改是不对年份部分进行硬编码,而是使用date参数中指定的年份。这样,该方法将在未来几年中起作用。最好从其他数据源中读取高峰日期范围,因此无需重新编译代码即可对其进行修改。但是我建议的基本思路如下:

public bool IsInPeakSeason(DateTime date)
{
    var startPeak = new DateTime(date.Year, 06, 15);
    var endPeak = new DateTime(date.Year, 08, 15);
    return date >= startPeak && date < endPeak;
}

答案 1 :(得分:-1)

正如@frontear所提到的,关于此行的错误是: DateTime dateCheck >= date1 && dateCheck <date;

您尝试使用dateCheck,而无需先为其分配值。使用以下代码,您可以像这样在一行中完全省略dateCheck

return (date >= new DateTime(2019, 06, 15) && date <= new DateTime(2019, 08, 15));