【问题标题】:Syntax error when using if-statement to a DateTime? variable [duplicate]对 DateTime 使用 if 语句时出现语法错误?变量[重复]
【发布时间】:2013-05-27 16:38:15
【问题描述】:

我在尝试编译此代码时遇到语法错误,我不太清楚为什么。谁能帮我修复这段代码?

DateTime? ModifiedDate = null;

ModifiedDate = (dbReader["ModifiedDate"] == DBNull.Value ? null : DateTime.Parse(dbReader['ModifiedDate'].ToString()));

【问题讨论】:

  • 什么语法错误?我想我能弄明白,但最好还是把它贴出来。
  • 请注意,不涉及“if”语句。如果您使用 if/else 来执行分配,编译器不会抱怨。另请注意,这是一个常见问题。见:stackoverflow.com/questions/202271/…

标签: c# asp.net .net visual-studio


【解决方案1】:

当涉及到条件运算符时,条件的两边都应该返回相同的类型(或可以相互隐式转换的类型)。

现在 null 不是特定类型,这是问题的一部分 - 您需要将其转换为 DateTime? 以便它匹配另一侧 - 这还有另一个问题:您使用的是 ' 而不是".

以下将起作用:

DateTime? ModifiedDate = 
               dbReader["ModifiedDate"] == DBNull.Value ? 
                          (DateTime?)null : 
                          DateTime.Parse(dbReader["ModifiedDate"].ToString());

【讨论】:

  • FWIW - 您也可以将 DateTime.Parse 的一半转换为 (DateTime?) 并获得相同的结果。
  • @MarkBrackett - 是的,虽然我更喜欢null 的演员阵容,因为它的明确性和可读性更好(我认为这比DateTimeDateTime? 的演员阵容更令人惊讶)。
  • 当我创建这个独立网络的帖子时,'是一个错字。我会试试这个。一位客户刚打电话有问题,所以我要跑一个小时。
【解决方案2】:
DateTime? ModifiedDate = dbReader["ModifiedDate"] == DBNull.Value ? (DateTime?)null : DateTime.Parse(dbReader["ModifiedDate"].ToString());

您不小心使用了字符分隔符而不是字符串分隔符。上面是固定的。

【讨论】:

  • 不,不是。仍然不会编译。
  • 所以还有别的...我会看到的。
  • @Oded 我不太确定在哪里...
  • 一些附加
  • 哦,对了,现在看到你的答案了。 +1。
猜你喜欢
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 2015-05-29
  • 2020-04-16
相关资源
最近更新 更多