我正在读一本书的.Net,而在代码示例一个有一类定义与此字段:
private DateTime? startdate
是什么DateTime?
意思?
我正在读一本书的.Net,而在代码示例一个有一类定义与此字段:
private DateTime? startdate
是什么DateTime?
意思?
由于DateTime
是一个struct
,而不是一class
,你会得到一个DateTime
对象 ,而不是引用 ,当你声明该类型的字段或变量。
而且,以同样的方式作为一个int
不能null
,所以这个DateTime
对象不能是null
的,因为它不是一个参考。
加入问号把它变成一个空类型 ,这意味着, 或者它是一个DateTime
的对象, 或者它是null
。
DateTime?
为语法糖Nullable<DateTime>
,其中Nullable
本身是一个struct
。
这是一个为空的日期时间。 ?
一个基本类型后/结构表明,它是可空的版本。
日期时间是永远不能为空的结构。 从MSDN :
DateTime值类型表示值的范围从午夜12:00:00,1月1日,0001公元或AD通过下午11点59分59秒(也称为共同的时代,或CE),9999年12月31日,日期和时间AD(CE)
DateTime?
可以为null但是。
阿? 作为值类型后缀允许将被othwerwise不可能空分配。
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
表示一个对象,其基本类型是也可以被分配一个空引用值类型。
这意味着,你可以写这样的事情:
DateTime? a = null;
if (!a.HasValue)
{
a = DateTime.Now;
if (a.HasValue)
{
Console.WriteLine(a.Value);
}
}
约会时间? 是syntatically相当于可空<日期时间>。
这相当于可空<日期时间>。 您可以附加“?” 任何原始类型或结构。
它基本上给你一个基元额外状态。 它可以是一个值,也可以为null。 它可以是在一个价值并不需要分配情况有用。 因此,而不是使用例如,datetime.min或最大,您可以将其指定为null,代表没有价值。
正如我们所知,DateTime的是一个结构指的DateTime是值类型,所以你得到一个DateTime对象,而不是一个参考,因为日期时间是不是一类,当你声明该类型的字段或变量不能用空初始因为值类型不接受空。 以同样的方式为int不能为空。 所以DateTime对象永远是空的,因为它不是一个参考。
但有时我们需要为空的变量或值类型的领域,到时候我们用问号,使他们可空类型,使他们允许空。
例如:-
约会时间? 日期= NULL;
诠释? 的intValue = NULL;
在上面的代码中,可变日期是日期时间的目的,或者它为空。 同为的intValue。