C# 方法';ToString';约会时间?具有0个参数,但使用1个参数调用

C# 方法';ToString';约会时间?具有0个参数,但使用1个参数调用,c#,datetime,tostring,nullable,C#,Datetime,Tostring,Nullable,我的ProcessDate类型是DateTime?当我使用ToString时,它会显示该异常 dfCalPlanDate.Text = concreteCalPlan.ProcessDate.ToString("d"); 感谢您的关注。很简单:(因此,Nullable,又称DateTime?)没有方法ToString(String) 您可能想调用DateTime.ToString(String)。要以空安全的方式执行此操作,可以使用C#6的?。: dfCalPlanDate.Text = co

我的ProcessDate类型是
DateTime?
当我使用ToString时,它会显示该异常

dfCalPlanDate.Text = concreteCalPlan.ProcessDate.ToString("d");
感谢您的关注。

很简单:(因此,
Nullable
,又称
DateTime?
)没有方法
ToString(String)

您可能想调用
DateTime.ToString(String)
。要以空安全的方式执行此操作,可以使用C#6的
?。

dfCalPlanDate.Text = concreteCalPlan.ProcessDate?.ToString("d");
这是一种简洁的写作方式:

var date = concreteCalPlan.ProcessDate;
dfCalPlanDate.Text = (date == null ? null : date.ToString("d"));
请注意,如果
ProcessDate
null
,则这将产生
null
。如果在这种情况下需要另一个结果,可以附加空合并运算符
??

dfCalPlanDate.Text = concreteCalPlan.ProcessDate?.ToString("d") ?? "no date set";

ProcessDate不是日期时间。ProcessDate。值为。您需要执行以下操作:

dfCalPlanDate.Text = concreteCalPlan.ProcessDate.Value.ToString("d");

记得检查日期时间是否正确吗?首先有一个值。

取决于ProcessDate来自何处,是来自db查询的字段吗?请尝试使用ProcessDate.value。ToString@BugFinder重要的是类型,而不是它来自哪里。正如前面提到的,这是一个
DateTime?
这只适用于C#6,应该在您的答案中说明。@m.rogalski C#6不是“唯一的”。此外,答案的要点是需要访问
。使用简洁的当前语法实际上是一种bonus@m.rogalski:在你看来,我可以假设最低的C#版本是什么而不明确提及它?@Heinzi,这不是关于最低的C#版本。但需要说明的是,您的解决方案将仅适用于版本6+,而不适用于实现
null
时的版本,甚至是常用的版本。@m.rogalski:感谢您的反馈,我已将其添加到我的答案中。if(concretePlan.ProcessDate!=null)dfCalPlanDate.Text=concreteCalPlan.ProcessDate.Value.ToString(“d”); 这很有用,谢谢你。