if(TryGetValue(... out var val))和val的范围

时间:2018-07-18 19:16:23

标签: c#

以下是现代C#中相当普遍的一种模式:

    if (!dict.TryGetValue(key, out var val))
    {
        return;
    }
    DoSomethingWith(val);

我对此功能感到惊讶,因为它从语法上看起来像val的范围应该只在if语句之内,但实际上它扩展到了函数的其余部分。

请介意,这不是投诉-我很惊讶它能满足我的要求!但是我很好奇:当外观相似的for (var ...foreach (var ...语句不执行我想要的操作时,此操作的依据是什么?这是特殊情况的规则吗?语言标准中是否有特定段落对此进行解释?

0 个答案:

没有答案