次のコードがあるとします:
string someString = null;
switch (someString)
{
case string s:
Console.WriteLine("string s");
break;
case var o:
Console.WriteLine("var o");
break;
default:
Console.WriteLine("default");
break;
}
switchステートメントが一致するのはなぜcase var o
ですか?
(事実上)falseと評価されるため、case string s
一致しないのは私の理解です。VS CodeのIntelliSense は、それも同様であると教えてくれます。何かご意見は?s == null
(null as string) != null
o
string
o
されるstring
( -つまり、ジェネリックで確認Foo(o)
どこFoo<T>(T template) => typeof(T).Name
) -それは非常に興味深いケースであるstring x
振る舞いは異なるよりはvar x
さえx
(コンパイラによって)入力時string