int
aを a float
、または afloat
に(暗黙的に) キャストできることを知っていdouble
ます。また、(明示的に) aを a 、または an に
キャストできます。double
float
int
これは、次の例で証明できます。
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 float
f is int