ように私には思えるisオペレータはビット矛盾しています。
bool Test()
{
// Returns false, but should return true.
return null is string;
}
null値が任意の参照(またはnull許容)型に属していることを期待します。そして実際、C#言語仕様はこの仮説をサポートするものを示しています。例えば(6.1.6暗黙的な参照変換):
暗黙的な参照変換は次のとおり
です。...
•nullリテラルから任意の参照型へ。
演算子の説明(7.10.10 is演算子)は、からへの参照変換が存在する場合is、式(E is T)はtrueになると言いますが、作成者は、がリテラルまたは値を持つ場合を明示的に除外して続行します。ETEnullnull
なぜ彼らはそれをするのですか?私には直観に反するようです。
null typeof Objectでもfalseを返します
null is stringがあったと仮定しtrue、これはそれnullがであることを暗示したstring。また、その前提としnull is Nullable<int>ているtrueことを暗示すること、nullですNullable<int>。さて、この質問に答えてください:どのタイプnullですか?