次のようなオブジェクトを安全にキャストするための拡張メソッドがあります。
public static T SafeCastAs<T>(this object obj) {
if (obj == null)
return default(T);
// which one I should use?
// 1. IsAssignableFrom
if (typeof(T).IsAssignableFrom(obj.GetType()))
return (T)obj;
// 2. IsInstanceOfType
if (typeof(T).IsInstanceOfType(obj))
return (T) obj;
// 3. is operator
if (obj is T)
return (T) obj;
return default(T);
}
ご覧のとおり、3 つの選択肢があるので、どれを使用する必要がありますか? IsAssignableFrom
実際、 、IsInstanceOfType
、およびis
演算子の違いは何ですか?