C# 空条件运算符和等待错误

2024-03-14

在 C# 中使用新的 null 条件运算符时,我遇到了一个有趣的 System.NullReferenceException。如果“MyObject”为 null,以下代码将给出 NullReferenceException:

await this.MyObject?.MyMethod()

我预计如果“MyObject”为空,则根本不会调用“MyMethod”,或者我是否误解了空条件运算符的目的?


你可以加??运算符所以如果?.返回 null 任务,使用 CompletedTask 代替。

await (this.MyObject?.MyMethod() ?? Task.CompletedTask)

我预计如果“MyObject”为空,则根本不会调用“MyMethod”。

这是真的。这?.运算符返回空任务而不是调用MyMethod。发生空引用异常是因为您无法等待空任务。任务必须初始化。

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

C# 空条件运算符和等待错误 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 从数据库检索数据并将其显示在 php 的表中..看看这段代码有什么问题吗? [复制]

    这个问题在这里已经有答案了 db mysql connect localhost root er mysql select db ram query insert into names values name add1 add2 mail
  • Moose:如何获取对象数组?特质?

    我开始意识到这适合初学者 package Bad has arr gt is gt rw ArrayRef Str package main my bad Bad gt new arr gt foo bar print bad gt arr
  • 如何在 d3 中使用 mousedown 获取鼠标坐标?

    我正在尝试在 D3 中创建一个图形 您可以在其中绘制一个正方形来放大 现在 我正在尝试让 mousedown 功能正常工作 我需要能够单击图表中的任意位置并获取坐标 这就是我现在所拥有的 svg on mousedown mousedown
  • 批处理文件调用 %~1 并获取变量的当前值/字符串

    下面的代码与批处理文件 命令提示符 相关 我的问题是代码的一部分current value is 1实际上并不显示的值 1 我希望它说 string01 或 string02 我不太确定如何做到这一点 我环顾四周 但无法解决这个简单的问题
  • 如何创建多语言 Android 应用程序?

    我想创建一个多语言 Android 应用程序 有没有办法检测用户喜欢哪种语言 是否有推荐的方法在 Android 上管理多种语言 或者我应该重新发明轮子 是的 有一个推荐的方法来管理多种语言 对于 Android 来说 多语言支持很容易完成
  • 无法弄清楚为什么我在 Swift iOS 应用程序代码中收到“Class ViewController has noinitializer”错误

    我试图在我的 iOS 应用程序中制作一个教程屏幕 用户可以在其中滑动几张图片来了解有关该应用程序的一些信息 一切看起来都很好 除了当我构建项目时 我在第一行代码中收到以下错误 ViewController 类没有初始化器 我做错了什么 我的
  • 按变量对轴文本进行颜色显示

    我想根据数据集中的另一个变量来改变热图轴文本的颜色 这是我到目前为止所尝试过的 load data scale numeric columns add state abbreviation and region state data lt
  • 在哪里可以找到详尽的停用词列表?

    我在哪里可以找到详尽的停用词列表 我的那篇文章很短 似乎不适用于科学文本 我正在创建词汇链以从科学论文中提取关键主题 问题是像这样的词based regarding等也应被视为停用词 因为它们没有太多意义 您还可以轻松添加到现有的停用词列表
  • Xcode 8 内存图显示“无选择”且无法工作

    我正在使用 Xcode 8 0 和 Swift3 处理一个项目 我想使用内存图调试器 但它什么也没显示 预期外观 来自教程 为什么我不能使用这个功能 该项目是使用 Xcode 8 创建的 不是从旧版本的 Xcode 迁移的 bitcode与
  • protractor 2.5.4 E/launcher - 会话未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 79

    我进行了大量研究并使用了各个论坛中提到的许多可能的解决方案 但没有一个对我有用 我试图在 CI CD 管道中运行它 尽管能够在本地运行量角器测试用例并能够启动浏览器 但在 CI CD 管道构建中它失败了 详细信息如下 我在 package
  • 更改已验证应用程序的应用程序名称 - Google OAuth 同意屏幕

    我有一个经过验证的应用程序 我想更改 OAuth 同意屏幕应用程序名称 仅应用程序名称 为了做到这一点 似乎我需要再次重新验证这一点 但我的应用程序现在已经在生产中 如果我提交它进行验证 当前已验证的 OAuth 屏幕是否会突然显示为未验证
  • Python 正则表达式的 unicode 文本中使用的字边界

    我想在正则表达式中使用单词边界来匹配一些 unicode 文本 Unicode 字母在 Python 正则表达式中被检测为单词边界 如下所示 gt gt gt re search r by b y lt sre SRE Match obje
  • 如何正确卸载python jupyter?

    I have jupyter安装有python3 5 on my Mac OSX 但我想要python2 7版本 所以 我基本上需要卸载3 5版本 然后重新安装2 7版本 但由于某种原因我无法卸载3 5版本 我试过sudo python3
  • Python中使用行数作为输入变量分割大文本文件的快速方法

    我使用行数作为变量来分割文本文件 我编写这个函数是为了将吐出的文件保存在临时目录中 除最后一个文件外 每个文件有 4 百万行 import tempfile from itertools import groupby count temp
  • 如何避免 AS3 代码混乱

    我使用 ActionScript 3 进行编程已经有一段时间了 我注意到我的代码的自然进展似乎采用一个巨大的文档类的形式 其中包含数十个成员变量 回调和舞台上对象的句柄 简而言之 有点乱 问题是 我真的没有找到解决办法 至少目前还没有 我在
  • 不使用提交按钮提交表单

    我正在使用表单提交数据以从数据库中获取记录 在表单中 我使用两个选择标签选项 因此 选择选项后 表单应提交不使用提交按钮 我正在等待选择输入后提交表单的响应 而不使用它应该自动提交的提交按钮 或任何按钮 创建一个函数来检查您想要的所有内容是
  • 在java中连接两个json对象

    我想连接多个 json 对象 我有两个像这样的json message test status 0 and this message test 2 status 1 结果必须是 message test status 0 message t
  • Kotlin 多平台“转到声明”转到反编译代码

    当使用 Android Studio 的 转到声明 功能 cmd 单击 时 尽管源位于我的项目中 但会显示反编译的源 kotlin MP 源位于另一个模块中 我可以使用 选择源 选项连接源 但是我必须对每个文件执行此操作 是否有用于连接到正
  • Azure B2C 问题和疑问

    我已经使用 Azure B2C 几天了 有一些问题和疑问 它创建的用于重定向登录的 URL 格式不正确 它包含两次问号 在网址之后 在配置文件名称之后再次 这会在您每次登录 注销等时导致 404 未找到错误 例如 它尝试重定向到的登录 UR
  • C# 空条件运算符和等待错误

    在 C 中使用新的 null 条件运算符时 我遇到了一个有趣的 System NullReferenceException 如果 MyObject 为 null 以下代码将给出 NullReferenceException await th