在C#中有一种简单的方法来检查DateTime实例是否已被赋值?
你的意思是这样的:
DateTime datetime = new DateTime(); if (datetime == DateTime.MinValue) { //unassigned }
或者你可以使用Nullable
DateTime? datetime = null; if (!datetime.HasValue) { //unassigned }
拥有一个尚未在C#中赋值的变量的唯一方法是将它作为局部变量 - 在这种情况下,在编译时你可以通过尝试从中读取来确定它没有明确赋值: )
我怀疑你真的想要Nullable
(或DateTime?
使用C#语法糖) - 让它null
开始,然后分配一个正常值DateTime
(将适当转换).然后你可以比较null
(或使用HasValue
属性)来查看是否已经设置了"真实"值.
把它放在某个地方:
public static class DateTimeUtil //or whatever name { public static bool IsEmpty(this DateTime dateTime) { return dateTime == default(DateTime); } }
然后:
DateTime datetime = ...; if (datetime.IsEmpty()) { //unassigned }
Nullable
尽可能使用.
我刚刚发现,未分配日期时间的GetHashCode()始终为零。我不确定这是否是检查null日期时间的好方法,因为我找不到任何有关为什么显示此行为的文档。
if(dt.GetHashCode()==0) { Console.WriteLine("DateTime is unassigned"); }