可空对象必须有一个值

2024-03-09

异常描述中有一个悖论: 可空对象必须有一个值(?!)

这就是问题:

我有一个DateTimeExtended班级, 具有

{
  DateTime? MyDataTime;
  int? otherdata;

}

和一个构造函数

DateTimeExtended(DateTimeExtended myNewDT)
{
   this.MyDateTime = myNewDT.MyDateTime.Value;
   this.otherdata = myNewDT.otherdata;
}

运行这段代码

DateTimeExtended res = new DateTimeExtended(oldDTE);

抛出一个InvalidOperationException带有消息:

可空对象必须有一个值。

myNewDT.MyDateTime.Value- 有效并包含常规DateTime object.

此消息的含义是什么?我做错了什么?

注意oldDTE is not null。我已经删除了Value from myNewDT.MyDateTime但由于生成的设置器而引发相同的异常。


你应该改变线路this.MyDateTime = myNewDT.MyDateTime.Value;只是this.MyDateTime = myNewDT.MyDateTime;

您收到的异常被抛出在.Value的财产Nullable DateTime,因为需要返回一个DateTime(因为这就是合同的目的.Value州),但它不能这样做,因为没有DateTime返回,因此它抛出异常。

一般来说,盲目调用是一个坏主意.Value在可为 null 的类型上,除非您事先知道该变量MUST包含一个值(即通过.HasValue查看)。

EDIT

这是代码DateTimeExtended不会引发异常:

class DateTimeExtended
{
    public DateTime? MyDateTime;
    public int? otherdata;

    public DateTimeExtended() { }

    public DateTimeExtended(DateTimeExtended other)
    {
        this.MyDateTime = other.MyDateTime;
        this.otherdata = other.otherdata;
    }
}

我是这样测试的:

DateTimeExtended dt1 = new DateTimeExtended();
DateTimeExtended dt2 = new DateTimeExtended(dt1);

添加.Value on other.MyDateTime导致异常。删除它可以消除异常。我认为你找错地方了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可空对象必须有一个值 的相关文章

随机推荐

  • 元组 (a,b)=(b,a) 中的成员交换在内部如何工作?

    In 55 a 5 In 56 b 6 In 57 a b b a In 58 a Out 58 6 In 59 b Out 59 5 a 和 b 的值交换在内部是如何工作的 它绝对不使用临时变量 Python 将右侧表达式与左侧赋值分开
  • android-studio的sdk管理器中没有LLDB

    I am using android studio 3 6 3 in my Manjaro Linux I am trying to run c in android studio for that i need LLDB I reinst
  • ReactJS错误编译失败'define'未定义

    我尝试编译的应用程序未使用外部 jquery 及其关联的 JS 文件进行编译 当我尝试将这些文件链接到 ReactJS 应用程序中的 HTML 页面时 它会抛出以下错误 错误是 define 未定义 no undef 此错误来自 jquer
  • 改造,回调 204 无内容响应?

    在 Android 上 我最初实现了一个像这样的 Retrofit 界面 DELETE USER API BASE URL id public void deleteUser Path id String id Callback
  • 当同级项具有不同宽度时将 Flex 项居中[重复]

    这个问题在这里已经有答案了 我知道 Flexbox 为居中项目提供了一个很好的解决方案 但是当我有 3 个项目并且我希望中心 第二个 项目相对于窗口居中时 我遇到了一个问题 而不管其他 2 个项目的大小 在我的笔中 您可以看到第二项 客户索
  • eclipse neon - 忽略 json 错误

    我的项目中只有很少的 JSON 并将它们导入 Eclipse 后Neon我在文件 和项目 上看到红色标记 抱怨 JSON 问题 我的问题是如何禁用 跳过 忽略 Eclipse Neon 中的 JSON 错误 您可以在下面配置 JSON 验证
  • jquery 文档内部或外部的函数就绪

    到目前为止 我只是将所有 jQuery 优点都放在了 document ready 函数 包括某些用户交互中使用的简单函数 但是不需要加载 DOM 文档或仅在之后调用的函数可以放置在 document ready 以及 例如 考虑一个非常简
  • 在 Python 中使用 try- except-else 是一个好习惯吗?

    在 Python 中 我时常会看到这样的块 try try this whatever except SomeException as exception Handle exception else return something try
  • JPMS ServiceLoader 没有按预期为我工作

    JPMS服务加载器不符合我的预期 我正在尝试提供一个作为可执行 jar 的桌面程序使用默认服务 单个用户可能会超载 用户提供自己的服务类 并在命令行上将其名称作为参数给出 The service package eu ngong mySer
  • 使用 MySQL 通过 JOIN 获取 GROUP BY 中的 SUM

    我在 MySQL 5 1 38 中有两个表 products id name price department 1 Fire Truck 15 00 Toys 2 Bike 75 00 Toys 3 T Shirt 18 00 Clothe
  • 导轨 计数 选择不同的

    我正在记录用户观看一系列视频的次数 现在我正在尝试制作一个图表 显示每天观看任何视频的用户数量 UserVideoWatching where created at gt AND user id 1 month ago User eleph
  • tidytext、quanteda 和 tm 返回不同的 tf-idf 分数

    我正在尝试研究 tf idf 加权语料库 我希望 tf 是按文档划分的比例 而不是简单的计数 我希望所有经典文本挖掘库都会返回相同的值 但我得到了不同的值 我的代码中是否存在错误 例如 我是否需要转置对象 或者 tf idf 计数的默认参数
  • 迭代同步集合

    我在这里问了一个关于迭代 a 的问题Vector 我已经得到了一些好的解决方案的答复 但我读到了另一种更简单的方法 我想知道这是否是一个好的解决方案 synchronized mapItems Iterator
  • 在Python 3中编写一个函数将基数16转换为基数10

    有没有一种简单的方法来修改这段从基数 2 转换为基数 10 的代码 以将基数 16 转换为基数 10 我的目标是构建一个专用的转换函数 而不使用任何内置的 Python 功能进行计算 谢谢 BinaryVal int input Enter
  • ARC 中的“[[something keep] autorelease]”相当于什么?

    相当于什么 something retain autorelease in ARC 我遇到一个问题 类 DBRequest 调用我的委托来表示完成 然后 我的委托将 DBRequest 实例设置为 nil 即 dealloc 但是 当堆栈从
  • 双屏 HDMI 输出编程

    在我的搜索中 我发现 Android SDK 目前不支持控制 HDMI 端口活动和处理 HDMI 输出 尽管像摩托罗拉这样的某些设备制造商 不知道是否还有其他制造商也这样做 提供了 API 以实现更好的控制 下面是其中两个的链接 其中双屏链
  • 列出 Android 手机中所有已安装或支持的语言

    如何在 android 中以编程方式获取 语言和输入设置 下列出的所有已安装或支持的语言的列表 我已经使用了 Resources getSystem getAssets getLocales 但它只给了我该语言的代码 如 en en us
  • 如何将 Tomcat 嵌入到 Spring Framework MVC 应用程序中?

    我已经创建了所需的配置 控制器类 但我不清楚应该如何编排这些类来运行 tomcat 实例 我知道对于 Spring Boot 来说 这是使用 SpringApplication run 的问题 但我正在尝试探索 Spring Boot 之前
  • 在解决方案文件上调用自定义 MSBuild 目标

    我有一个解决方案文件 我的解决方案 sln 其中有一个项目 我的项目 vcxproj 我想执行一个自定义目标 我的自定义目标 通过解决方案在我的项目上 它看起来像这样 msbuild MySolution sln t MyCustomTar
  • 可空对象必须有一个值

    异常描述中有一个悖论 可空对象必须有一个值 这就是问题 我有一个DateTimeExtended班级 具有 DateTime MyDataTime int otherdata 和一个构造函数 DateTimeExtended DateTim