Как проверить, соответствует ли тип переменной типу, хранящемуся в переменной

<code>User u = new User();
Type t = typeof(User);

u is User -> returns true

u is t -> compilation error
</code>

Как я могу проверить, если какая-то переменная имеет некоторый тип таким образом?

Ответы на вопрос(4)

Чтобы проверить, совместим ли объект с заданной переменной типа, вместо записи

u is t

ты должен написать

typeof(t).IsInstanceOfType(u)

равен ли тип вашего экземпляра типу класса. Чтобы получить тип экземпляра вы используетеGetType() метод:

 u.GetType().Equals(t);

или же

 u.GetType.Equals(typeof(User));

должен сделать это. Очевидно, что вы можете использовать & apos; == & apos; сделать ваше сравнение, если вы предпочитаете.

GetType() существует на каждом типе фреймворка, потому что он определен на основеobject тип. Таким образом, независимо от самого типа, вы можете использовать его для возврата основногоType

Итак, все, что вам нужно сделать, это:

u.GetType() == t

is оператор делаетnot проверьте, является ли тип времени выполнения операндаexactly данный тип; скорее, он проверяет, является ли тип среды выполненияis compatible with данный тип:

class Animal {}
class Tiger : Animal {}
...
object x = new Tiger();
bool b1 = x is Tiger; // true
bool b2 = x is Animal; // true also! Every tiger is an animal.

Но проверка на типidentity с проверками отражения дляidentity, не дляcompatibility

bool b3 = x.GetType() == typeof(Tiger); // true
bool b4 = x.GetType() == typeof(Animal); // false! even though x is an animal

Если это не то, что вы хотите, то вы, вероятно, хотите IsAssignableFrom:

bool b5 = typeof(Tiger).IsAssignableFrom(x.GetType()); // true
bool b6 = typeof(Animal).IsAssignableFrom(x.GetType()); // true! A variable of type Animal may be assigned a Tiger.

ВАШ ОТВЕТ НА ВОПРОС