Эквивалент Java’s obj.getClass().isInstance(otherObj)
в C# следующие:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Примечание, что, в то время как и Java и работа C# над объектом типа выполнения (в‰Ј C# System.Type
Java java.lang.Class
) obj
(через .getClass()
по сравнению с .getType()
), Java’s isInstance
берет объект в качестве своего аргумента, тогда как C#’s IsAssignableFrom
ожидает другой System.Type
объект.
bool result = (obj is MyClass); // Better than using 'as'
Зависит, используйте 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)
Не уверенный, который работал бы лучше. Я оставлю его до кого-то еще для сравнительного тестирования:)