什么是"DateTime?" 而不只是C#中的DateTime?

JL.*_*JL. 4 c# datetime nullable

C#中a DateTime?和a DateTime(没有问号)有什么区别?

And*_*are 19

值类型后面的问号是Nullable<T>结构的简写表示法.

表示一个对象,其基础类型是一个值类型,也可以像引用类型一样赋值为null.

Nullable<T>结构允许您将值类型(如DateTime,Int32,Guid等),并将其看作在某些方面引用类型.它确实变得有点复杂(在赋值,提升运算符和其他东西方面),因此我建议您阅读Nullable Types(C#编程指南)及其相关文章.

可空类型是System.Nullable结构的实例 .可空类型可以表示其基础值类型的正常值范围,以及额外的空值.例如,a Nullable<Int32>,发音为"Nullable of Int32",可以分配从-2147483648到2147483647的任何值,或者可以为其分配空值.Nullable<bool>可以为A 赋值true或false,或者为null.在处理包含可能未赋值的元素的数据库和其他数据类型时,将null分配给numeric和Boolean类型的能力特别有用.例如,数据库中的布尔字段可以存储值true或false,也可以是未定义的.


ter*_*tyl 17

DateTime? 可以为null而不是 DateTime

  • 实际上,`DateTime?`本身不是null,因为它也是一个值类型.`Nullable <T>`公开一个`HasValue`属性,编译器使用该属性来"伪造"包含在`Nullable <T>`中的值类型的引用类型语义. (2认同)