3 回答
TA贡献1995条经验 获得超2个赞
这个问题已经被问过很多次了。编译器告诉你它不知道如何转换null为DateTime。
解决方案很简单:
DateTime? foo;
foo = true ? (DateTime?)null : new DateTime(0);
请注意,Nullable<DateTime>可以写入DateTime?,这将节省您一堆打字。
TA贡献1780条经验 获得超5个赞
FYI(Offtopic,但很漂亮并且与可空类型有关)我们有一个方便的运算符,仅用于可空类型,称为空合并运算符
??
像这样使用:
// Left hand is the nullable type, righthand is default if the type is null.
Nullable<DateTime> foo;
DateTime value = foo ?? new DateTime(0);
TA贡献1831条经验 获得超10个赞
类似于接受的另一个解决方案是使用C#的default关键字。虽然使用泛型定义,但它实际上适用于任何类型。
应用于OP问题的示例用法:
Nullable<DateTime> foo;
foo = true ? default(DateTime) : new DateTime(0);
使用当前接受的答案的示例用法:
DateTime? foo;
foo = true ? default(DateTime) : new DateTime(0);
此外,通过使用default,您不需要指定变量nullable,以便为其赋值null。编译器将自动分配特定变量类型的默认值,不会遇到任何错误。例:
DateTime foo;
foo = true ? default(DateTime) : new DateTime(0);
- 3 回答
- 0 关注
- 310 浏览
添加回答
举报