ASP.NET 核心文档显示 ?操作员。这是什么意思?

ASP.NET Core docs show unfamiliar usage of the ? operator. What does it mean?

ASP.NET Core minimal API docs 显示类似于以下的语法:

db.Todos.Find(id)
is Todo todo
    ? Results.Ok(todo)
    : Results.NotFound());

我相信这是 ? 运算符的一个用例,它记录在主 C# docs 中。但是,这些文档仅显示以下格式:

condition ? consequent : alternative

其中 condition 必须计算为布尔值。

is 关键字允许检查特定变量是否具有特定类型,因此像 db.Todos.Find(id) is Todo 这样的关键字就足够了。

但是,他们还引入了一个变量 todo,该变量在该语句之前未在任何地方声明,并且似乎作为参数传递给 Results.Ok

我现在很困惑。添加todo是什么意思。在哪里记录了变量可以包含在 aftercondition 之后?如果没有记录,那为什么不呢?

这是类型安全的 pattern matching cast.

所以变量‘todo’是可验证的non-null Todo。