【发布时间】:2011-01-26 21:48:43
【问题描述】:
老实说,我不确定为什么会出现这个错误。
private int hour
{
get;
set
{
//make sure hour is positive
if (value < MIN_HOUR)
{
hour = 0;
MessageBox.Show("Hour value " + value.ToString() + " cannot be negative. Reset to " + MIN_HOUR.ToString(),
"Invalid Hour", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
//take the modulus to ensure always less than 24 hours
//works even if the value is already within range, or value equal to 24
hour = value % MAX_HOUR;
}
}
}
我也试过只做一个实际的财产:
public int hour
{
get;
set
{
//make sure hour is positive
if (value < MIN_HOUR)
{
hour = 0;
MessageBox.Show("Hour value " + value.ToString() + " cannot be negative. Reset to " + MIN_HOUR.ToString(),
"Invalid Hour", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
//take the modulus to ensure always less than 24 hours
//works even if the value is already within range, or value equal to 24
hour = value % MAX_HOUR;
}
}
}
建议?
【问题讨论】:
-
快速说明:在 setter 中显示 UI 是一个非常糟糕的主意。
-
如果你得到了;并设置;那么它是一个汽车属性。如果您定义其中任何一个,它就不再是自动属性。
-
另外,从我看到的情况来看,此代码在实现 get 访问器后应该抛出 StackOverflowException,因为您没有为您的属性使用支持字段。
标签: c#