【发布时间】:2010-12-26 03:42:31
【问题描述】:
异常描述中存在悖论: 可空对象必须有一个值 (?!)
这就是问题所在:
我有一个DateTimeExtended 课程,
有
{
DateTime? MyDataTime;
int? otherdata;
}
还有一个构造函数
DateTimeExtended(DateTimeExtended myNewDT)
{
this.MyDateTime = myNewDT.MyDateTime.Value;
this.otherdata = myNewDT.otherdata;
}
运行此代码
DateTimeExtended res = new DateTimeExtended(oldDTE);
抛出一个带有消息的InvalidOperationException:
可空对象必须有一个值。
myNewDT.MyDateTime.Value - 有效并且包含一个常规的DateTime 对象。
这条消息的含义是什么,我做错了什么?
注意oldDTE 不是null。我已经从myNewDT.MyDateTime 中删除了Value,但是由于生成的setter 引发了同样的异常。
【问题讨论】:
-
另一个构造函数是什么?
-
奇怪。我在那里用 .Value 重现异常,没有 .Value 那里没有异常。您确定您正在运行更新后的代码吗?
-
构造函数接受一个自身的实例。你是如何创建第一个实例的?
-
它被构造为没有参数的 new(),然后我添加了值(它有效)。
-
问题已解决 - 问题不存在...生成了其他数据和 MyDateTime 的设置器,它在设置它之前检查值.. 当它为空时飞行!!!跨度>
标签: c# nullable invalidoperationexception