c# - 系统.日期时间?与 System.DateTime

标签 c# asp.net datetime

我正在编写一些代码,我需要从页面中的日历控件读取日期值(Ajax 工具包:日历扩展器)。

下面的代码:

DateTime newSelectedDate = myCalendarExtender.SelectedDate;

出现以下错误:

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

但是,通过插入强制转换,我可以使代码正常工作:

DateTime newSelectedDate = (DateTime)myCalendarExtender.SelectedDate; // works fine!

日历控件(Ajax 工具包)的“SelectedDate”属性将数据类型描述为“System.DateTime?” ...显然是“?”这一切都与此有关。

当数据类型包含此符号(?)时究竟发生了什么......我假设我可以将“SelectedDate”属性直接应用到“DateTime”类型的变量中而无需强制转换。

谢谢

最佳答案

?表示该类型可以为空。有关详细信息,请参见例如MSDN

Nullable 是一个编译器支持的值类型包装器,它允许值类型变为 null。

要访问 DateTime 值,您需要执行以下操作:

DateTime? dateOrNull = myCalendarExtender.SelectedDate;
if (dateOrNull != null)
{
    DateTime newSelectedDate = dateOrNull.Value;
}

关于c# - 系统.日期时间?与 System.DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1729553/

相关文章:

c# - WPF 应用程序中的 TextBox.Text 内存泄漏

企业Web应用程序的.NET性能提示

Visual Studio 2019 中的 asp.net core React redux 项目中的 JavaScript

c# - Web API 2 路由属性在一个 Controller 中起作用,但在另一个 Controller 中不起作用

c# - .Net 和 Java 中的日期格式字符串

c# - 为什么我的排序不起作用?

c# - 循环 10 次添加输入,在 C# 中使用 for 和 do while 循环?

c# - Xunit - 在少数全套测试中禁用并行性

python-3.x - Pandas 用最接近的非数字值进行插值

javascript - JS : How to format date and time string?