如果尚未分配DateTime实例,它的值是什么?
要查看一个具体示例:在下面的类中,“UnassignedDateTime == null”会返回true吗?
如果是这样,那么这样的引用肯定是空的,但是没有赋值为null,这绝对是不合逻辑的吗?
class TestClass
{
public DateTime AssignedDateTime {get; set;}
public DateTime UnassignedDateTime {get; set;}
public TestClass()
{
AssignedDateTime=DateTime.Now;
//Not assigning other property
}
}
我已经检查了类似问题的答案,但这是关于DateTime的?这是可空的.. How to check if DateTime object was not assigned?
答案 0 :(得分:37)
设计决策恰好是default(DateTime)
DateTime.MinValue
default(T)
是用作字段或数组成员时初始化的类型
default(int) == 0
,default(bool) == false
等
所有引用类型的默认值当然是null
。
写int i = default(int);
是合法的,但这有点傻。但是,在通用方法中,T x = default(T);
非常有用。
这样的引用肯定是null,但是没有赋值为null,这是非常不合逻辑的吗?
DateTime是一个值类型,(struct DateTime { ... }
)因此它不能是null
。将它与null进行比较将始终返回false。
因此,如果您想查找分配的状态,可以将其与default(DateTime)
进行比较,DateTime?
可能不是您网域中的有效日期。否则,您将不得不使用可空类型{{1}}。
答案 1 :(得分:5)
如果您没有为其分配另一个值http://msdn.microsoft.com/en-us/library/system.datetime.minvalue.aspx
,则DateTime变量默认为DateTime.MinValue
答案 2 :(得分:3)
它可能保持DateTime.MinValue
的值(此常量的值相当于00:00:00.0000000,0001年1月1日。)
答案 3 :(得分:1)
DateTime
如果已初始化,则会达到最小值,但未设置。例如12:00:00 midnight, January 1, 0001
答案 4 :(得分:1)
另一种可能性是minvalue,我认为它是最初的。因为它在内部存储为整数,这是有意义的。
答案 5 :(得分:1)
目前无法检查,但我认为默认为:01/01/0001 00:00:00。
如果您调试了代码并将其悬停在属性上,它应该告诉您。
答案 6 :(得分:0)
由于DateTime结构不可为空(DataTime?),因此条件(UnassignedDateTime == null)始终为false。