比较日期时的 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。

关于为什么会这样或如何解决这个问题的任何想法?

-谢谢。

比较日期时的 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; 
        } 
    } 
} 
相关文章:
  • 没有找到相关文章