c# - "DateTime?"和 "DateTime"之间的差异。 (试图从日期选择器中获取值(value))

标签 c# wpf visual-studio-2010 datetime datetimepicker

我对 WPFC# 很陌生,所以不要怪我问这个可能很愚蠢的问题。

我的 WPF 应用有两个日期选择器。我想在 DateTime 发生变化时从中获取它,并将其用作应用程序中其他一些东西的变量。所以我对他们每个人都有这样的东西(方法是由 VS 自动生成的):

private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            date1 = datePicker1.SelectedDate;
        }

但问题是日期选择器中的日期格式是 DateTime? 而不是 DateTime 我真的不知道那里的问号是什么意思以及为什么有没有。我尝试了一些研究,但没有找到任何对我有帮助的东西。如果您看到从该日期选择器获取日期的更好方法,您也可以帮助我。我只是在我的 xaml.cs 代码中需要它,而不是在 xaml 中,而且我并不真正喜欢使用绑定(bind),因为我不确定在这种情况下它是否按我需要的方式工作。

感谢您的回答。

编辑:我想添加它向我显示此错误的信息:

Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)

最佳答案

日期时间 ?Nullable DateTime,它可以保存空值。对于您的情况,您可以这样做:

private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
    if(datePicker1.SelectedDate.HasValue)
         date1 = datePicker1.SelectedDate.Value;
}

Nullable<T> C#

In C# and Visual Basic, you mark a value type as nullable by using the ? notation after the value type. For example, int? in C# or Integer? in Visual Basic declares an integer value type that can be assigned null.

关于c# - "DateTime?"和 "DateTime"之间的差异。 (试图从日期选择器中获取值(value)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397228/

相关文章:

.net - 为什么我的测试因 System.Security.VerificationException 而失败?

c# - Visual Studio - 我可以查看旧版本项目的代码吗?

c++ - 使用 __stdcall 和 Boost 1.47.0 编译错误 log4cxx

c# - 如何将颗粒与 C# 连接? (在 C# 中加载本体。)

c# - 计算字节数组定时流的帧速率和大小

WPF MVVM - 监控绑定(bind)对象的更改(例如,如果 IsDirty 则启用保存)

wpf - WPF 中是否需要基于 `RadioButtonList` 的自定义 `ListBox`?

c# - VSIX newtonsoft 不在包中 (VS>15.5) 抑制包

c# - 在任务并行库场景中按正确顺序记录

c# - 从 WPF 保存到 SQL Server 数据库