使用它来检查c
是否是TForm
的实例。
c.GetType().Name.CompareTo("TForm") == 0
除了使用string
作为CompareTo()
的参数之外,还有更多类型安全的方法吗?
这里的不同答案有两种不同的含义。
如果要检查实例是否为精确类型,则
if (c.GetType() == typeof(TForm))
是要走的路。
如果您想知道c
是TForm
的实例还是子类,请使用is
/as
:
if (c is TForm)
或
TForm form = c as TForm;
if (form != null)
值得在你的头脑中清楚你真正想要的是哪种行为。
if(c is TFrom)
{
// Do Stuff
}
或者,如果您计划使用c
作为TForm
,请使用以下示例:
var tForm = c as TForm;
if(tForm != null)
{
// c is of type TForm
}
第二个示例只需要检查c
是否为TForm
类型一次。如果您检查c
是否为TForm
类型,然后将其强制转换,CLR 将接受额外的检查。这里是reference。
编辑:从 Jon Skeet 偷走
如果要确保c
属于TForm
,而不是任何从TForm
继承的类,则使用
if(c.GetType() == typeof(TForm))
{
// Do stuff cause c is of type TForm and nothing else
}
是的,“is”关键字:
if (c is TForm)
{
...
}
查看 MSDN 上的详细信息:http://msdn.microsoft.com/en-us/library/scekt9xw(VS.80).aspx
检查对象是否与给定类型兼容。例如,可以确定对象是否与字符串类型兼容,如下所示:
同样,在某种程度上
Type.IsAssignableFrom(Type c)
如果 c 和当前 Type 表示相同的类型,或者当前 Type 在 c 的继承层次结构中,或者当前 Type 是 c 实现的接口,或者 c 是泛型类型参数并且当前 Type 表示 c 的约束之一,则为 True。
从这里:http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(79条)