【发布时间】:2018-01-23 15:50:42
【问题描述】:
考虑以下代码:
void Foo(object value)
{
switch (value)
{
case Int16 i16:
case Int32 i32:
// Do something with i32
break;
}
}
你能解释一下为什么 i32 没有赋值吗?我知道 i16 肯定没有分配,因为它在以前的范围内,但在 i32 的情况下我不明白。
【问题讨论】:
-
我想问题是编译器无法判断哪个变量(
i16或i32)是被分配的变量,因此必须假设两者都未分配。 -
@DavidG 是的,你是对的。我忘记了该值实际上可能是 Int16,因此分配了
i16,然后未分配i32。谢谢。
标签: c# switch-statement pattern-matching