gpt4 book ai didi

c# - 编译器错误地指示使用未分配的局部变量错误

转载 作者:行者123 更新时间:2023-11-30 17:26:57 28 4
gpt4 key购买 nike

<分区>

给定这段代码:

private void TryIt(Dictionary<int, int> myDict)
{
if (myDict?.TryGetValue(1, out int myValue) ?? false)
{
Console.Out.WriteLine(myValue); // <-- Error CS0165
}
}

C# 编译器发出:

error CS0165: Use of unassigned local variable 'myValue'

但显然不能引用myValue当调用 TryGetValue()?. 跳过运算符(operator)。这是因为生成的 null转换为 false通过 ?? false .

换句话说,如果 myDictnull , ?.接线员将跳过对 TryGetValue() 的调用, 离开 myValue未分配。我明白了。

但是 ??然后,运算符将始终评估该空传播到 false ,在这种情况下阻止进入 if block 。

这在编译时很明显,那么为什么会出错呢?

我怀疑这可能与所有这些语法糖最终如何分解为实际的 .NET p 代码有关,但出错似乎仍然是错误的...

不使用 .? 时运算符(operator),我没有收到任何错误,这是预期的:

    if (myDict.TryGetValue(1, out int myValue))
{
Console.Out.WriteLine(myValue); // <-- NO ERROR
}

就在我用.?的时候与 ?? false .

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com