null和datetime之间没有隐式转换

 mobiledu2502875315 发布于 2023-02-12 17:36

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

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

null和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;

dcastro.. 27

(Z) ? X : Y

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

由于null不能被隐式转换为DateTime,也不DateTimenull,表达不能被评价.更多相关内容:Eric Lippert的类型推断问题.

你要投nullDateTime?.通过这样做,X将是类型DateTime?,Y将是类型DateTime.由于存在从DateTimeto 的隐式转换DateTime?,因此可以计算表达式,并且它将返回type的值DateTime?.

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

2 个回答
  • (Z) ? X : Y
    

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

    由于null不能被隐式转换为DateTime,也不DateTimenull,表达不能被评价.更多相关内容:Eric Lippert的类型推断问题.

    你要投nullDateTime?.通过这样做,X将是类型DateTime?,Y将是类型DateTime.由于存在从DateTimeto 的隐式转换DateTime?,因此可以计算表达式,并且它将返回type的值DateTime?.

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

    2023-02-12 17:38 回答
  • 您需要告诉编译器将null视为DateTime?。否则,编译器将不知道是什么类型null

    CallBack = cdate == DateTime.MinValue ? (DateTime?)null : cdate.Date;

    2023-02-12 17:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有