可能重复: DateTime“空”值
在C#中有许多内置类是不可空的。例如,Datetime,有时我想检查我的datatime对象是否为空,但不允许。如何向datetime类插入空性?
发布于 2013-01-30 11:27:10
当然,只要对声明进行更改,就可以使整数、双倍、日期时间等变为空。
DateTime? dt = null.但
有两件事你需要注意。
1) DateTime?而DateTime不是相同的数据类型,所以,如果您这样做的话:
DateTime? date1 = null;
date1 = DateTime.Now;
DateTime date2 = date1; // Wont work.访问可空类型的值的正确方法如下:
DateTime date2 = date1.Value;2)第二个问题是,在使用该值之前,必须始终检查是否存在值。
DateTime? date1 = null;
DateTime date2 = date1.Value;这将引发一个异常,"Nullable对象必须有一个值“。
因此,并不像添加可空运算符那样简单,每次使用变量时都需要检查属性"HasValue“:
DateTime? date1 = DateTime.Now;
if(date1.HasValue)
{
DateTime date2 = date1.Value;
}明智地使用虚线。
发布于 2013-01-30 11:18:19
发布于 2013-01-30 11:25:05
简而言之,Structs是值类型。值类型必须始终有效(因此必须初始化struct构造函数中的所有成员),并且不能为空。
然而,有一种欺骗;
您可以使用Nullable<T>,否则它可以用作"T?",将值类型封装在可以为空的引用中。
用法:
DateTime? foo = new DateTime(...);
foo.Value.<datetime member>https://stackoverflow.com/questions/14602701
复制相似问题