C# 感叹号作为索引器的一部分?

C# 感叹号作为索引器的一部分?,c#,.net-core,C#,.net Core,在.NETCore3.1中反编译了一本字典之后,我看到了奇怪的语法,我找不到任何关于它的信息 代码的作用是什么在这种情况下是什么意思如果(i>=0)返回\u条目![i] .价值 以下是索引器的完整代码,以了解更多上下文 public TValue this[TKey key] { get { int i = FindEntry(key); if (i >= 0) return _entries![i].value; Throw

在.NETCore3.1中反编译了一本字典之后,我看到了奇怪的语法,我找不到任何关于它的信息

代码的作用是什么在这种情况下是什么意思<代码>如果(i>=0)返回\u条目![i] .价值

以下是索引器的完整代码,以了解更多上下文

public TValue this[TKey key]
{
    get
    {
        int i = FindEntry(key);
        if (i >= 0) return _entries![i].value;
        ThrowHelper.ThrowKeyNotFoundException(key);
        return default;
    }
    set
    {
        bool modified = TryInsert(key, value, InsertionBehavior.OverwriteExisting);
        Debug.Assert(modified);
    }
}
如果您能提供有关此项的任何信息/链接,我将不胜感激。这有助于明确告诉编译器,
\u条目
不能为空引用


它是在C#8.0中引入a的范围中添加的。启用可为null的上下文时,所有引用类型都被识别为不可为null的引用类型。当引用可能为
null
时,编译器会生成警告<代码>运算符允许您告诉编译器特定引用在给定上下文中不能是
null

这是否回答了您的问题?我做了搜索,但没有找到那个问题,谢谢!(为了避免重复,我将很快结束我的问题)