当前位置:编程学习 > C#/ASP.NET >>

类的(IS)判断

第一:
public class SqlServer : AbstractDatabase
可以进行这样的类型判断吗?
If(SqlServer is AbstractDatabase)
{
}
吗?

还是要先进行类型转换
Object db= SqlServer;
If(db is AbstractDatabase)
{
}
Else
{
}

有点不理解,虽然是引用,但是为什么子类可以“IS”父类呢?这里的“IS”是什么意思?“继承”是一种什么机制,是引用类型,还是值类型???
--------------------编程问答-------------------- is就是运算符 和 等号 = 加号 + 没啥区别 
这里执行的操作是判断  SqlServer的类型(typeof(SqlServer)或这他的BaseType) 是否是 typeof(AbstractDatabase)
if(typeof(SqlServer) == typeof(AbstractDatabase) || typeof(AbstractDatabase).BaseType == typeof(AbstractDatabase)) --------------------编程问答-------------------- 没学过英文?is就是“是”...检查对象是否与给定类型兼,和继承没有直接关系,只能用于引用类型...

郭德纲 is 人 == true...兼容...

郭德纲 is 华人 == true...兼容...

郭德纲 is 犹太人 == false...不兼容...

ps:继承是OO的概念,去看OOP入门书...继承与引用类型还是值类型也没有直接关系... --------------------编程问答-------------------- 需不需要转换 试一下就行了。

因为SqlServer : AbstractDatabase

如果SqlServer 是 AbstractDatabase

如果这个子类是AbstractDatabase
--------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/library/scekt9xw(v=vs.80).aspx --------------------编程问答--------------------
引用 2 楼 vrhero 的回复:
没学过英文?is就是“是”...检查对象是否与给定类型兼,和继承没有直接关系,只能用于引用类型...

郭德纲 is 人 == true...兼容...

郭德纲 is 华人 == true...兼容...

郭德纲 is 犹太人 == false...不兼容...

ps:继承是OO的概念,去看OOP入门书...继承与引用类型还是值类型也没有直接关系...

+ --------------------编程问答--------------------
引用 2 楼 vrhero 的回复:
没学过英文?is就是“是”...检查对象是否与给定类型兼,和继承没有直接关系,只能用于引用类型...

郭德纲 is 人 == true...兼容...

郭德纲 is 华人 == true...兼容...

郭德纲 is 犹太人 == false...不兼容...

ps:继承是OO的概念,去看OOP入门书...继承与引用类型还是值类型也没有直接关系...


犀利。。。。 --------------------编程问答-------------------- 看下MSDN
 is 返回Ture 或 False
如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。有关更多信息,请参见 7.6.6 强制转换表达式。

如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。

不能重载 is 运算符。

请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。
http://msdn.microsoft.com/zh-cn/library/scekt9xw(v=vs.80).aspx
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,