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中我很无知为什么会发生这种情况
答案 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