2014-07-14 82 views
0

我已经通过一些问题(link1,link2)关于这篇文章,但我仍然不能答案和解决问题。不能将类型System.DateTime隐式转换为System.DateTime?显式转换存在。你错过了演员吗?

private void done_Click(object sender, EventArgs e) 
    { 
     if (datePicker != null) 
      Items.Over50Date = datePicker.Value; 

     NavigationService.GoBack(); 
    } 

datePicker是DatePicker Tool的名称。 Over50Date很可能是,

public static DateTime Over50Date; 

当我将datePicker.Value分配给Over50Date,我得到的错误,不会打字的System.DateTime转换为System.DateTime。我做错了什么地方?

+0

是否'Items.Over50Date =(DateTime的)datePicker.Value;'帮助吗?如果我没有记错,'DatePicker.Value'是'DateTime?'类型(可为空的DateTime),简单的转换就可以解决这个问题。 –

+1

你引用的错误信息中不包含任何'?' - 请检查* actual *错误信息是否有一个。 –

+0

对于我来说,错误信息是另一种方式。这是实际的错误? –

回答

1

试试这个:

private void done_Click(object sender, EventArgs e) 
{ 
    if (datePicker != null) 
     Items.Over50Date = datePicker.Value != null ? datePicker.Value.Value : DateTime.Now; 

    NavigationService.GoBack(); 
} 
+0

它不起作用,我得到相同的错误。 –

+0

我更新了代码,你可以再试一次吗? –

+0

是的,它的工作。另外我尝试了其他方式,它也适用于这个简单的代码。 Items.Over50Date = datePicker.Value.Value; //获取该值的价值有助于我获得价值。 –

1

Systme.DateTime,而System.DateTime?意味着一个可以为空的DateTime对象,当然,这两个不一样。

您应该将您的日期(您可以为null)(可能是DatePicker)转换为DateTime。

[增订]:

注:它假定datePicker.value是System.DateTime的? 如果没有,DatePicker的属性是您的日期存储?

请尝试以下代码:

private void done_Click(object sender, EventArgs e) 
{ 
    if (datePicker != null) 
    { 
     if (datePicker.Value != null) 
     { 
      Items.Over50Date = Convert.ToDateTime(datePicker.Value); 
     } 
    } 

    NavigationService.GoBack(); 
} 
+0

你能帮我解码吗?我明白,但不能带来。 –

+0

Items.Over50Date是什么类型? – Complexity

+0

我在我的问题中提到过它,它的类型为DateTime。 –

相关问题