如果DateTime对象不能为null,那么它在分配之前是什么?

Ric*_*ich 24 c#

如果尚未分配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
    }

}
Run Code Online (Sandbox Code Playgroud)


我已经检查了类似问题的答案,但这是关于DateTime的?哪个是可空的.. 如何检查是否未分配DateTime对象?

Hen*_*man 38

这将是default(DateTime)一个设计决定恰好DateTime.MinValue

default(T)是用作字段或数组成员时初始化的类型.
default(int) == 0, default(bool) == false
所有的引用类型,默认是当然的null.

写这是合法的,int i = default(int);但这有点傻.然而,在通用方法中,T x = default(T);可能非常有用.

当然,这样的引用可能为null,但未分配为null,这是非常不合逻辑的吗?

DateTime是一个Value-type,(struct DateTime { ... })所以它不可以null.将它与null进行比较将始终返回false.

因此,如果您想查找分配的状态,您可以将其与default(DateTime)您的域中的有效日期进行比较.否则你将不得不使用可空类型DateTime?.

  • 可能想要添加`default(SomeClass)`将为您提供任何类型的默认值. (2认同)

Leo*_*ngs 5

DateTime.MinValue如果您没有为其分配另一个值,则默认情况下为DateTime变量http://msdn.microsoft.com/en-us/library/system.datetime.minvalue.aspx