以下是现代C#中相当普遍的一种模式:
if (!dict.TryGetValue(key, out var val))
{
return;
}
DoSomethingWith(val);
我对此功能感到惊讶,因为它从语法上看起来像val
的范围应该只在if
语句之内,但实际上它扩展到了函数的其余部分。
请介意,这不是投诉-我很惊讶它能满足我的要求!但是我很好奇:当外观相似的for (var ...
或foreach (var ...
语句不执行我想要的操作时,此操作的依据是什么?这是特殊情况的规则吗?语言标准中是否有特定段落对此进行解释?