比较日期时的 StackOverflowException
本文关键字:StackOverflowException 日期 比较 | 更新日期: 2023-09-27 18:31:57
>我在结构中有一个DateTime属性字段。我正在尝试验证输入日期以确保输入的值不在将来。
我正在使用以下代码:
public struct Car
{
public DateTime Year
{
get
{
return Year;
}
set
{
if (value > DateTime.Now)
throw new InvalidOperationException("Date cannot be in the futrure");
else
Year = value;
}
}
}
当我现在尝试运行此代码时,我不断收到带有消息"无法计算表达式,因为当前线程处于堆栈溢出状态"的 StackOverflowException。
关于为什么会这样或如何解决这个问题的任何想法?
-谢谢。
您正在调用一个名为 Year
的属性,其get
访问器调用Year
,其get
访问器调用Year
...依此类推,直到您的堆栈溢出。
您应该创建一个私有字段 private DateTime _year
来存储实际值。
它正在返回自己...尝试设置变量。
public struct Car
{
private DateTime _year;
public DateTime Year
{
get
{
return _year;
}
set
{
if (value > DateTime.Now)
throw new InvalidOperationException("Date cannot be in the futrure");
else
_year = value;
}
}
}