什么是" 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来表示没有值。