什么是" DateTime"?在C#中是什么意思?
时间:2020-03-06 14:29:49 来源:igfitidea点击:
我正在阅读一本.Net书,在其中一个代码示例中,具有此字段的类定义:
private DateTime? startdate
" DateTime"是什么意思?
解决方案
这是可以为空的DateTime。基本类型/结构后的"?"表示它是可为空的版本。
DateTime是一个永远不能为null的结构。从MSDN:
The DateTime value type represents dates and times with values ranging from 12:00:00 midnight, January 1, 0001 Anno Domini, or A.D. (also known as Common Era, or C.E.) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.)
但是," DateTime"可以为空。
等效于Nullable <DateTime>。我们可以添加"?"任何原始类型或者结构。
由于" DateTime"是一个" struct",而不是" class",因此在声明该类型的字段或者变量时,会得到一个" DateTime"对象,而不是引用。而且,就像int不能为null一样,DateTime对象也不能为null,因为它不是引用。
添加问号会将其变成可为空的类型,这意味着它是" DateTime"对象,或者是" null"。
" DateTime"是" Nullable <DateTime>"的语法糖,其中" Nullable"本身是一个" struct"。
一种 ?作为值类型的后缀,则允许进行空值分配,而这在其他情况下是不可能的。
http://msdn.microsoft.com/zh-CN/library/b3h38hb0.aspx
Represents an object whose underlying type is a value type that can also be assigned a null reference.
这意味着我们可以编写如下内容:
DateTime? a = null; if (!a.HasValue) { a = DateTime.Now; if (a.HasValue) { Console.WriteLine(a.Value); } }
约会时间?在语法上等效于Nullable <DateTime>。
它基本上为我们提供了图元的额外状态。它可以是一个值,也可以为null。在不需要分配值的情况下很有用。因此,可以不使用例如datetime.min或者max而是将其分配为null来表示没有值。