IsAssignableFrom, IsInstanceOfType and the is keyword, what is the difference?

前端 未结 4 696
醉梦人生
醉梦人生 2020-12-02 22:41

I have an extension method to safe casting objects, that looks like this:

public static T SafeCastAs(this object obj) {
    if (obj == null)
                


        
4条回答
  •  死守一世寂寞
    2020-12-02 22:59

    You use whatever you have the information for.

    If you have an instance and a static type you want to check against, use is.

    If you don't have the static type, you just have a Type object, but you have an instance you want to check, use IsInstanceOfType.

    If you don't have an instance and you just want to check the compatibility between a theoretical instance of a Type and another Type, use IsAssignableFrom.

    But really is seems like you are just re-implementing the as operator (except that yours would also work for non-nullable value types, which is usually not a big limitation).

提交回复
热议问题