User u = new User();
Type t = typeof(User);
u is User -> returns true
u is t -> compilation error
Как мне таким образом проверить, принадлежит ли переменная к какому-либо типу?
c#
reflection
types
Каран
источник
источник
typeof(Animal).IsInstanceOfType(x)
короче и прощеtypeof(Animal).IsAssignableFrom(x.GetType());
(и Resharper предложит использовать первое, если вы используете второе).t
наtypeof(Animal)
. Так становится улучшенная форма Маркаt.IsInstanceOfType(x)
.GetType()
существует для каждого типа фреймворка, потому что он определен в базовомobject
типе. Таким образом, независимо от типа, вы можете использовать его для возврата базовогоType
Итак, все, что вам нужно сделать, это:
источник
Вам нужно увидеть, совпадает ли Тип вашего экземпляра с Типом класса. Чтобы получить тип экземпляра, вы используете
GetType()
метод:или
u.GetType.Equals(typeof(User));
должен это сделать. Очевидно, вы можете использовать '==' для сравнения, если хотите.
источник
u.GetType.Equals(typeof(User));
t
которая содержит тип.Чтобы проверить, совместим ли объект с данной переменной типа, вместо записи
u is t
ты должен написать
typeof(t).IsInstanceOfType(u)
источник