未处理的类型' System.StackOverflowException'发生在application.exe中

时间:2016-07-12 07:06:01

标签: c#

public object Value
{
    get
    {
        if (this.realDate)
            return (object)base.Value;
        return (object)DBNull.Value;
    }
    set
    {
        if (Convert.IsDBNull(value))
        {
            this.realDate = false;
            this.oldFormat = this.Format;
            this.Format = DateTimePickerFormat.Custom;
            this.CustomFormat = " ";
        }
        else
        {
            this.realDate = true;
            // the line below is erroneous 
            this.Value = Convert.ToDateTime(value);
        }
    }
}

未处理的类型' System.StackOverflowException'发生在application.exe中我很无知为什么会发生这种情况

2 个答案:

答案 0 :(得分:4)

public object Value
{
    …
    set
    {
        this.Value = value;
    }
}

这实际上会再次调用Value的setter。所以你从setter中的setter调用setter来设置setter ...导致一个由StackOverflowException停止的无限循环。

您应该有一个支持字段,您可以将其写入,例如像这样的东西:

private object _value;

public object Value
{
    get { return _value; }
    set
    {
        // some logic
        _value = value;
    }
}

答案 1 :(得分:0)

你在Value getter中有一个无休止的递归调用:

(object)base.Value;

导致stackoverflow