C# is

最近看到百度搜索出来的某些文章,对C# is关键字的解释有误,记录一下吧,摘自官方,不要误导人。

以下摘自msdn:

is 关键字在运行时评估类型兼容性。 它确定对象实例或表达式结果是否可转换为指定类型。 语法如下:

C#复制

   expr is type

其中 expr 是计算结果为某个类型的实例的表达式,而 type 是 expr 结果要转换到的类型的名称。 如果 expr 非空,并且通过计算表达式得出的对象可转换为 type,则 is 语句为 true;否则返回 false

例如,以下代码确定 obj 是否可转换为 Person 类型的实例:

C#复制

if (obj is Person) {
   // Do something if obj is a Person.
}

如果满足以下条件,则 is 语句为 true:

  • expr 是与 type 具有相同类型的一个实例。

  • expr 是派生自 type 的类型的一个实例。 换言之,expr 结果可以向上转换为 type 的一个实例。

  • expr 具有属于 type 的一个基类的编译时类型,expr 还具有属于 type 或派生自 type 的运行时类型。 变量的编译时类型是其声明中定义的变量类型。 变量的运行时类型是分配给该变量的实例类型。

  • expr 是实现 type 接口的类型的一个实例。

由此,举个例子A,B,C是类,I表示接口,他们之间的关系是:A:B, B:C, C:I。则对应上面的4个条件,表示如下:

  • expr = new A(); type = new A()
  • expr = new A(); type = B
  • C expr; type = B; C = B   或   C expr; type = B; C = A 
  • expr = new C(); type = I
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值