C#等效的IronPython isinstance()

时间:2011-08-25 13:32:09

标签: c# ironpython

什么是IronPython的{C#等价物isinstance(...)

4 个答案:

答案 0 :(得分:2)

你应该能够做到:

if (x is Type) {
  ...
}

例如:

object b = new Button();


if (b is Button) {
   throw new Exception("Button encountered.");
}

答案 1 :(得分:2)

如果您的目标是真正投射对象,您应该这样做:

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

第一行尝试转换对象“x”,如果不成功,则typeObject将具有null值。 这种方法比is运算符更好,因为它只会抛出一次对象。 方法是尝试转换对象,如果成功则返回true,但通常在if中你将再次强制转换为:

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

在这段代码中,实际上有两个强制转换,一个在is运算符中,另一个在if。

答案 2 :(得分:1)

你是说这个意思吗?

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

这将检查某个对象是否为字符串。如果你的意思是其他的,请更好地解释那些不熟悉ironPython的人。

答案 3 :(得分:0)

您可以尝试使用反射。

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

正如@Shadow Wizard指出的那样,你可以做同样的事情:

bool isntance = something is SomeObject;