C # Эквивалент IronPython isinstance () - PullRequest
0 голосов
/ 25 августа 2011

Что такое эквивалент C # IronPython isinstance(...)?

Ответы [ 4 ]

2 голосов
/ 25 августа 2011

Если ваша цель состоит в том, чтобы действительно привести объект, вы должны сделать это следующим образом:

Type typeObject = x as Type;
if(typeObject != null)
{
    ...
}

Первая строка пытается привести объект к "x", и если не удалось, typeObject будет иметь значение nullзначение.Этот подход лучше, чем оператор is, потому что он приведёт объект только один раз.Подход is пытается привести объект к объекту и, если успешно, возвращает true, но обычно внутри if, если вы приведете его снова, вот так:

if(x is Type)
{
    Type typeObject = (Type)x;
    ...
}

В этом коде фактически есть два преобразования, одно в операторе isи внутри if.

2 голосов
/ 25 августа 2011

Вы должны просто сделать:

if (x is Type) {
  ...
}

Например:

object b = new Button();


if (b is Button) {
   throw new Exception("Button encountered.");
}
1 голос
/ 25 августа 2011

Вы имеете в виду такую ​​вещь?

object o = "hello";
if (o is string)
{
    //do something with a string
}

Это проверит, например, является ли какой-либо объект строкой. Если вы имеете в виду что-то еще, пожалуйста, объясните лучше для тех, кто не знаком с IronPython.

0 голосов
/ 25 августа 2011

Вы можете попробовать использовать отражение.

bool instance = something.GetType().IsInstanceOfType(SomeObject);

Как указал @Shadow Wizard, вы можете сделать то же самое, как это:

bool isntance = something is SomeObject;
...