Hat*_*ath 278
你的意思是这样的:
DateTime datetime = new DateTime();
if (datetime == DateTime.MinValue)
{
//unassigned
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用Nullable
DateTime? datetime = null;
if (!datetime.HasValue)
{
//unassigned
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 78
拥有一个尚未在C#中赋值的变量的唯一方法是将它作为局部变量 - 在这种情况下,在编译时你可以通过尝试从中读取来确定它没有明确赋值: )
我怀疑你真的想要Nullable<DateTime>(或DateTime?使用C#语法糖) - 让它null开始,然后分配一个正常值DateTime(将适当转换).然后你可以比较null(或使用HasValue属性)来查看是否已经设置了"真实"值.
son*_*que 28
把它放在某个地方:
public static class DateTimeUtil //or whatever name
{
public static bool IsEmpty(this DateTime dateTime)
{
return dateTime == default(DateTime);
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
DateTime datetime = ...;
if (datetime.IsEmpty())
{
//unassigned
}
Run Code Online (Sandbox Code Playgroud)
DateTime 是值类型,所以它不能永远为空。如果你认为DateTime?( Nullable ) 你可以使用:
DateTime? something = GetDateTime();
bool isNull = (something == null);
bool isNull2 = !something.HasValue;
Run Code Online (Sandbox Code Playgroud)
我刚刚发现,未分配日期时间的GetHashCode()始终为零。我不确定这是否是检查null日期时间的好方法,因为我找不到任何有关为什么显示此行为的文档。
if(dt.GetHashCode()==0)
{
Console.WriteLine("DateTime is unassigned");
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我会说默认值总是new DateTime(). 所以我们可以写
DateTime datetime;
if (datetime == new DateTime())
{
//unassigned
}
Run Code Online (Sandbox Code Playgroud)