c# – null和datetime之间没有隐式转换

栏目: C# · 发布时间: 6年前

内容简介:翻译自:https://stackoverflow.com/questions/20398773/there-is-no-implicit-conversion-between-null-and-datetime

参见英文答案 > Conditional operator assignment with Nullable<value> types? 5个

下面的代码从给定的DataRow(modelValue)读取一个数据,并将其解析为可以为空的DateTime实例.

问题:请参阅L1&中的代码部分. L2两者在技术上相等(如果我没有造成任何小学生错误).但是,L1按预期工作,但不是L2.我正进入(状态

there is no implicit conversion between null and datetime

当我在L2下执行代码时.有人可以告诉我吗?

DateTime? CallBack;

        var callBackDate = modelValue["CallBack"] == DBNull.Value ? null : modelValue["CallBack"].ToString();
        //Parsing
        DateTime cdate;
        if (!DateTime.TryParse(callBackDate, out cdate))
            cdate = DateTime.MinValue;


        //L1
        if (cdate==DateTime.MinValue)
            CallBack = null;
        else
           CallBack = cdate.Date;

       //L2  
       CallBack = cdate == DateTime.MinValue?null:cdate.Date;
(Z) ? X : Y

三元运算符要求从第二个操作数(X)到第三个操作数(Y)或从Y到X存在隐式转换.

由于null不能隐式转换为DateTime,也不能将DateTime转换为null,因此无法计算表达式.更多相关信息: Type inference woes by Eric Lippert .

你必须将null转换为DateTime?.通过这样做,X将是DateTime类型?和Y将是DateTime类型.由于存在从DateTime到DateTime?的隐式转换,因此可以计算表达式,并且它将返回DateTime?类型的值.

或者,按照相同的逻辑,您也可以将第三个操作数Y转换为DateTime?.

翻译自:https://stackoverflow.com/questions/20398773/there-is-no-implicit-conversion-between-null-and-datetime


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

谷歌的断舍离:互联网企业的破坏式创新

谷歌的断舍离:互联网企业的破坏式创新

[日]辻野晃一郎 / 樊颖 / 机械工业出版社 / 2018-1 / 45.00

本书主要分为三部分: 第一部分主要讨论了世界当下如火如荼的互联网企业进军传统产业大潮,并探讨了传统企业在互联网时代的救赎之路。 第二部分主要探讨了成功体验的反面:速度与迭代,并讨论了传统企业之所以无法实现迭代与快速发展的关键原因。介绍互联网公司如何通过组织精简流程来实现高速竞争时代的机动性。 第三部分讨论了互联网时代究竟需要什么样的人才,传统企业的员工应当怎样投身互联网企业才能避......一起来看看 《谷歌的断舍离:互联网企业的破坏式创新》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具