考虑以下代码:
void Foo(object value)
{
switch (value)
{
case Int16 i16:
case Int32 i32:
// Do something with i32
break;
}
}
您能解释为什么未分配i32吗?我知道肯定没有分配i16,因为它在先前的范围内,但是在i32的情况下我没有得到。
最佳答案
从Mads Torgersen(Microsoft C#langauge PM)对here的评论中:
如果切换失败,则不会明确分配由任何一个标签引入的变量,因此它们在主体中将无用。考虑以下代码:
case string s:
case null:
WriteLine(s); // Can't! s may not have been assigned.
因此,编译器无法确定分配了哪个变量,而必须假定两者均未分配。
关于c# - 切换模式匹配案例回退,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48405742/