小ck包怎么查实正品:检查实例是否为类型(c# instanceof)

关于小ck包怎么查实正品的问题,在c# instanceof中经常遇到, 使用它来检查c是否是TForm的实例。

使用它来检查c是否是TForm的实例。

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

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

475

这里的不同答案有两种不同的含义。

如果要检查实例是否为精确类型,则

if (c.GetType() == typeof(TForm))

是要走的路。

如果您想知道cTForm的实例还是子类,请使用is/as

if (c is TForm)

TForm form = c as TForm;
if (form != null)

值得在你的头脑中清楚你真正想要的是哪种行为。

47
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
}
15

是的,“is”关键字:

if (c is TForm)
{
    ...
}

查看 MSDN 上的详细信息:http://msdn.microsoft.com/en-us/library/scekt9xw(VS.80).aspx

检查对象是否与给定类型兼容。例如,可以确定对象是否与字符串类型兼容,如下所示:

12

同样,在某种程度上

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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(593)
查询明细:查询所有薪资明细员工OCA FusionHCM
上一篇
怎么解除小程序违规:Chrome违规:[违规]处理程序占用了83ms的运行时间
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(79条)