在Roslyn Pattern Matching spec它指出:模式匹配变量范围
的图案可变的范围如下:
如果图案出现在一个if语句的条件下,它的范围 是if语句的条件和受控语句,但不包含其他语句。
但是微软最新的“最新消息” posts和presentations都出现了这个例子:
public void PrintStars(object o)
{
if (o is null) return; // constant pattern "null"
if (!(o is int i)) return; // type pattern "int i"
WriteLine(new string('*', i));
}
足见模式匹配外的模式匹配的,如果水平范围使用i
变量。
这是一个疏忽,还是已经从规范改变范围?
这将是if语句的_controlled语句_ – juharr
@juharr,那么受控语句只会返回吗? –
是的,我错过了。实际上,我认为这可能是指更高范围的“i”,但很难说,因为它是测试版功能的代码片段。我想你可以预览并测试它。 – juharr