【发布时间】:2013-08-13 16:46:31
【问题描述】:
小问题,仅供理解:我有 2 个可为空的日期时间。我读出了创建时间和更新时间,都可以填写。所以我想检查一下哪个是以后的:
lastChangedIndrole = (tmpCreate > tmpUpdate ? tmpCreate : tmpUpdate);
但是这里发生了一些奇怪的事情。我希望在 f.e. 时抛出一个错误。 tmpUpdate 为空,但它似乎返回了一些东西,但不是正确的值,而是第二个值,在我的示例中是更新。
有什么我不明白的吗?我认为代码会检查毫秒到 1900,如果有空值,则会引发错误。但这不会发生。这是我不懂的魔法吗?
附: : 有什么特别的词吗?像vb中的IIF这样的构造函数?很难搜索。
谢谢,本周有个好的开始
马蒂亚斯
【问题讨论】:
-
为什么您会期望这会引发异常?请注意,您正在谈论的代码中没有构造函数。您的意思是“条件运算符”而不是“构造函数”吗?
-
您可能也有兴趣检查值是否为
null或等于DateTime.MinValue,在将操作结果分配给另一个变量之前确保数据有效很重要(导致另一个奇怪的行为且难以调试)。 -
我认为您的意思是使用“construct”这个词,而不是“constructor”,因为后者在 .NET 和 C#(以及许多编程语言)中具有特殊含义,而“construct” " 是指由较小的部分组合而成的东西,或由组合术语和想法构成的陈述/句子。
-
我没有写完整的代码。我的问题就像:当代码检查一个可空值的值并且它为空并且它检查这个值是否大于另一个值时,他是如何处理它的?由于检查 null ref 类型会引发错误,我希望与可为 null 的类型相同?