使用此命令检查c是否是TForm的实例。
c.GetType().Name.CompareTo("TForm") == 0
除了使用字符串作为CompareTo()的参数之外,还有更类型安全的方法吗?
使用此命令检查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合并,因为这是一张重复的支票。
其他回答
Or
c.getType() == typeOf(TForm)
试试下面的方法
if (c is TForm) {
...
}
而且,在某种程度上也是一样的
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
正如其他人提到的,“is”关键字。但是,如果您稍后要将其转换为该类型,例如。
TForm t = (TForm)c;
然后你应该使用“as”关键字。
例如,TForm t = c作为TForm。
然后你可以检查
if(t != null)
{
// put TForm specific stuff here
}
不要和is合并,因为这是一张重复的支票。
这里不同的答案有两种不同的含义。
如果您想检查一个实例是否属于确切的类型,那么
if (c.GetType() == typeof(TForm))
才是正确的选择。
如果你想知道c是一个TForm的实例还是一个子类,那么使用is/as:
if (c is TForm)
or
TForm form = c as TForm;
if (form != null)
清楚你真正想要的是哪种行为是值得的。