C#中是否有一种简单的方法来检查DateTime实例是否已分配值?检查DateTime变量是否有指定的值
回答
让变量在C#中没有赋值的唯一方法就是它是一个局部变量 - 在这种情况下,在编译时你可以告诉它并不是通过尝试从中读取:)
我怀疑你真的想Nullable<DateTime>
(或DateTime?
与C#语法糖) - 使其null
入手,然后分配一个正常DateTime
值(将在适当转换)。然后,您只需比较null
(或使用HasValue
属性)来查看是否设置了“真实”值。
如果可能,使用Nullable<DateTime>
。
DateTime是值类型,所以它不能为空。 如果你认为DateTime? (可空),可以使用:
DateTime? something = GetDateTime();
bool isNull = (something == null);
bool isNull2 = !something.HasValue;
你的意思是,像这样:
DateTime datetime = new DateTime();
if (datetime == DateTime.MinValue)
{
//unassigned
}
或者你可以使用可空
DateTime? datetime = null;
if (!datetime.HasValue)
{
//unassigned
}
只有第二个是防弹的。未设置DateTime的表示,并不保证框架。我个人认为他们应该为这种情况添加一个Unset静态成员。 – 2013-10-10 12:51:02
要添加@RupertRawnsley所说的内容,实际上应该与缺省值(DateTime)进行比较,该值是未分配的DateTime的值。它恰好等于MinValue,但它可能会改变。 – 2015-01-06 12:48:14
我一般喜欢在可能情况下,使用默认值类型的值来确定它们是否已被设置。这显然是不可能的,特别是对于整数 - 但对于DateTimes,我认为保留MinValue来表示它没有被改变是公平的。这个优于空的好处是,有一个地方你会得到一个空引用异常(可能很多地方你不必在访问它之前检查null)
我刚刚发现未分配日期时间的GetHashCode()始终为零。我不确定这是否是一种检查空日期时间的好方法,因为我无法找到有关此行为显示原因的任何文档。
if(dt.GetHashCode()==0)
{
Console.WriteLine("DateTime is unassigned");
}
我想说默认值总是new DateTime()
。因此,我们可以写
DateTime datetime;
if (datetime == new DateTime())
{
//unassigned
}
把这个地方:
public static class DateTimeUtil //or whatever name
{
public static bool IsEmpty(this DateTime dateTime)
{
return dateTime == default(DateTime);
}
}
则:
DateTime datetime;
if (datetime.IsEmpty())
{
//unassigned
}
- 1. 检查是否变量是一定值
- 2. 如何检查变量是否有值?
- 3. 检查变量是否具有值''
- 4. 在wordpress中检查一个特定的变量是否有值
- 5. 检查多个布尔变量是否具有特定值
- 6. C#检查变量是否定义
- 7. 如何检查变量是否定义?
- 8. Autotabbing&检查变量是否定义
- 9. 如何检查变量类型是否为DateTime
- 10. 函数检查是否有变量
- 11. php检查URL是否有变量
- 12. R检查至少有20%的矢量是否有特定值
- 13. 检查JList是否有特定的值
- 14. 检查的变量是指在JavaScript中指定对象
- 15. 在检查值之前检查变量是否存在
- 16. 检查UIViewController是否有一个特定的变量
- 17. 检查隐式类型变量是否包含特定值
- 18. 检查一个字符串变量是否具有整数值
- 19. Lua表检查是否有任何变量匹配任何值
- 20. 检查数组变量是否具有x值?
- 21. 指定xquery的SQL变量存在的方法来检查值是否在给定的值集
- 22. 如何检查是否变量的值发生了变化
- 23. 检查Html.ValidationSummary()是否有值
- 24. 检查是否有空值
- 25. 检查是否$ _POST变量是人口
- 26. 检查变量是否是PDO对象?
- 27. 检查变量是否是数字
- 28. 检查是否变量是从UICollectionViewCell子
- 29. PHP XML。如何检查是否变量的值是0
- 30. 检查类是否存在变量,如果是,请修改此变量的值
如何检查是否值等于默认datetime值。这种方法有什么不明显的缺点吗?如果(request.StartDateTime ==默认(日期时间) {request.StartDateTime = DateTime.Now;} – Menol 2016-05-13 08:33:17
@Menol:那么这并不能说明有意赋予`default(DateTime) `和一个刚刚开始的方式,基本上它把域中的一个值看作“我不喜欢的正常使用的特殊和不可用的” – 2016-05-13 08:54:33