5

intaを a float、または afloatに(暗黙的に) キャストできることを知っていdoubleます。また、(明示的に) aを a 、または an に
キャストできます。doublefloatint

これは、次の例で証明できます。

int i;
float f;

// The smaller type fits into the bigger one
f = i;

// And the bigger type can be cut (losing precision) into a smaller
i = (int)f;

問題は、この型が別の型から継承されないことです (intはサブタイプではなく、floatその逆もありません)。
彼らは、暗黙的/明示的なキャスト演算子またはそのようなものを実装しています。そうでない場合は、そのまま動作します...

私の質問は、型 A の変数を型 B にキャストできるかどうかを確認するにはどうすればよいですか。

私は試しましたがi.GetType().IsAssignableFrom(f.GetType())Type.IsAssignableFrom(Type)継承とインターフェース(およびおそらくそれ以上のもの)のみをチェックしますが、実装されたキャスト演算子はチェックしません。と
を試しましたが、効果は同じです。i is floatf is int

4

2 に答える 2