Что такое эквивалент C# для Java isInstance ()?
Я знаю is и as на instanceof, а как же рефлексивный isInstance() способ?
5 ответов:
эквивалент Java
obj.getClass().isInstance(otherObj)в C# выглядит следующим образом:bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());обратите внимание, что в то время как Java и C# работают над объектом типа среды выполнения (Java
java.lang.Class≣ C#System.Type) изobj(через.getClass()vs.getType()), JavaisInstanceпринимает объект в качестве аргумента, в то время как в C#IsAssignableFromожидает еще одинSystem.Type"объект".
зависит, используйте
isЕсли вы не хотите использовать результат броска и использоватьasЕсли вы делаете. Вы вряд ли когда-нибудь захотите написать:if(foo is Bar) { return (Bar)foo; }вместо:
var bar = foo as Bar; if(bar != null) { return bar; }
просто с верхней части моей головы, вы могли бы также сделать:
bool result = ((obj as MyClass) != null)Не уверен, что будет работать лучше. Я оставлю это кому-то другому, чтобы проверить :)
ниже код может быть альтернатива
IsAssignableFrom.parentObject.GetType().IsInstanceOfType(inheritedObject)посмотреть тип.IsInstanceOfType описание в MSDN.
Comments