They are similar, but conceptually very different. The first answers the question "if I had a variable of this type, can I assign it a value of this type?"
The latter answers the question "can this actual value be converted to this type by reference or box conversion?"
In the latter case, the actual object is an object of type Type , and not an object of type Class . Make sure you understand the difference between:
Type t = typeof(Class); Class c = new Class(); bool b1 = t is IInterface; bool b2 = c is IInterface;
First query: "Can a Type be converted to an interface?" and the second one asks: "Can a Class object be converted to an interface?"
source share