Что C# эквивалентен isInstance Java ()?

86
задан Konrad Rudolph 21 September 2016 в 20:01
поделиться

4 ответа

Эквивалент 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 объект.

52
ответ дан Konrad Rudolph 24 November 2019 в 07:56
поделиться
bool result = (obj is MyClass); // Better than using 'as'
180
ответ дан Ana Betts 24 November 2019 в 07:56
поделиться

Зависит, используйте is, если Вы не хотите использовать результат броска и использования as, если Вы делаете. Вы почти никогда не хотите записать:

if(foo is Bar) {
    return (Bar)foo;
}

Вместо:

var bar = foo as Bar;
if(bar != null) {
    return bar;
}
39
ответ дан Robert Gowland 24 November 2019 в 07:56
поделиться

просто первое, что пришло на ум Вы могли также сделать:

bool result = ((obj as MyClass) != null)

Не уверенный, который работал бы лучше. Я оставлю его до кого-то еще для сравнительного тестирования:)

2
ответ дан Chris Jester-Young 24 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: