0

在我后面的 c# 代码中,当我转换
public DateTime custDOB { get; set; }

public DateTime? SubDOB { get; set; }

我的代码行之一出现错误
tboxDateOfBirth.Text = oCust.custDOB.ToShortDateString();

并且消息显示“System.Nullable”不包含“ToShortDateString”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“ToShortDateString”

我该如何解决这个问题?

4

3 回答 3

8

将该行更改为

tboxDateOfBirth.Text = oCust.custDOB.HasValue? oCust.custDOB.Value.ToShortDateString() : string.Empty;
于 2012-08-14T13:48:14.443 回答
1

如果您始终 100% 确定它将有一个值并且不会为空,请执行此操作

tboxDateOfBirth.Text = ((DateTime)(oCust.custDOB)).ToShortDateString();

或者,如果它有可能为空,您可以寻求 Andre Calil 的答案。

您还应该阅读有关空合并运算符 (??)的信息。

于 2012-08-14T13:48:24.907 回答
1

有可以为空的类型——比如 int? 或 DateTime?,因此您可以检查它们是否具有任何值.HasValue 访问实际值使用

oCust.custDOB.Value.ToShortDateString();
于 2012-08-14T13:49:32.507 回答