使用此命令检查c是否是TForm的实例。

c.GetType().Name.CompareTo("TForm") == 0

除了使用字符串作为CompareTo()的参数之外,还有更类型安全的方法吗?


当前回答

正如其他人提到的,“is”关键字。但是,如果您稍后要将其转换为该类型,例如。

TForm t = (TForm)c;

然后你应该使用“as”关键字。

例如,TForm t = c作为TForm。

然后你可以检查

if(t != null)
{
 // put TForm specific stuff here
}

不要和is合并,因为这是一张重复的支票。

其他回答

如果你想使用c作为TForm,它比其他答案更紧凑:

if(c is TForm form){
    form.DoStuff();
}

而且,在某种程度上也是一样的

Type.IsAssignableFrom(Type c)

如果c和当前Type表示相同类型,则为 current Type在c的继承层次结构中,或者如果current Type是c实现的接口,或者如果c是泛型类型 参数,当前类型表示c的约束之一。”

网址:http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx

Or

c.getType() == typeOf(TForm)

正如其他人提到的,“is”关键字。但是,如果您稍后要将其转换为该类型,例如。

TForm t = (TForm)c;

然后你应该使用“as”关键字。

例如,TForm t = c作为TForm。

然后你可以检查

if(t != null)
{
 // put TForm specific stuff here
}

不要和is合并,因为这是一张重复的支票。

试试下面的方法

if (c is TForm) { 
 ...
}