当前位置: 首页 > 知识库问答 >
问题:

什么是C#中的双感叹号?

西门高歌
2023-03-14

从…起https://source.dot.net/#System.Private.CoreLib/Hashtable.cs,475:

public virtual bool ContainsKey(object key!!)

它看起来像两个零原谅运算符。有相关文件吗?

共有1个答案

孟佑运
2023-03-14

这是C#11中引入的空参数检查语法。

提案就在这里,在运行时首次推出的公关也在这里。

语法:

public void Foo(string bar!!)
{
}

大致相当于:

public void Foo(string bar)
{
    if (bar is null)
    {
        throw new ArgumentNullException(nameof(bar));
    }
}

...尽管实际实现使用了抛出助手,但请参见SharpLab。

 类似资料:
  • 我最近阅读了一些使用将变量转换为布尔值以在if语句中进行评估的代码。这对我来说似乎有些多余,因为无论如何都会评估变量的布尔值。这样做有什么性能优势吗?还是为了更好地支持浏览器? 示例代码: 编辑: 我也在非布尔类型的操作数中看到了这一点,但我一直假设使用无论如何都会评估变量的布尔值,因为Javascript中的所有值都是“真实的”或“Falsey”。 示例代码:

  • 问题内容: Swift编程语言指南包含以下示例: 然后,在将公寓分配给该人时,他们使用感叹号“解开实例”: “取消实例包装”是什么意思?为什么有必要?它与仅执行以下操作有何不同: 我是Swift语言的新手。只是想降低基础知识。 更新: 我遗漏的一大难题(未在答案中直接说明-至少在撰写本文时没有)是在执行以下操作时: 正如我最初所认为的,这并不意味着“ 是类型,可能为零”。我只是误解了,它们是完全独

  • 问题内容: 查看数据库中的V $ SQL,我刚发现一个奇怪的查询,看起来像: 有人知道语法@!的含义吗? 我以前从未在Oracle中见过类似的东西 谢谢 问题答案: 这是源自远程数据库的查询。使用@DB_NAME语法在远程数据库上的查询中引用了您在V $ SQL中看到此查询的数据库 远程数据库已将查询推送到您的数据库中以便执行,但是要回答该查询,您的数据库需要从远程数据库中拉回一些信息。这是@!进

  • 问题内容: !function () {}(); 问题答案: JavaScript语法101。这是一个 函数声明 : 请注意,这里没有分号:这只是一个函数 声明 。您将需要调用来实际运行该功能。 现在,当我们添加看似无害的感叹号时:它将变为 表达式 。现在它是一个 函数表达式 。 该单独不会调用函数,当然,但我们现在可以把结尾:它的优先级高于并立即调用函数。 因此,作者正在做的是为每个函数表达式保

  • 问题内容: 我正在阅读此查询,遇到了我不明白的那一行 FETT列表是一个表 FETT搜索是FETT列表中的一列 有人可以解释感叹号的含义吗? 谢谢 问题答案: 通常,您会在MS Access代码中看到此信息(对于感叹号,这是SQL Server的句点)。您可以通过table.column来引用列,或者如果为表赋予别名,则可以通过alias.column来引用。如果要在使用联接时特定于表,则可以执行

  • 在Kotlin中,单个感叹号意味着什么?我见过几次,特别是在使用Java API时。但我在文档中和StackOverflow上都找不到它。