首页 新闻 会员 周边 捐助

C#或者在.net中怎样判断一个对象的类型

0
悬赏园豆:10 [已解决问题] 解决于 2013-10-05 11:11

在C#中当一个类的引用类型和创建的对象类型不一样的时候,这个对象类型到底怎么判断。我表达得可能不清楚,例子:A a=new B(); 这个a是什么类型?要分情况吗?求详解。

Vivu的主页 Vivu | 菜鸟二级 | 园豆:450
提问于:2013-10-04 17:52
< >
分享
最佳答案
0

他的类型是B,只是程序需要调用父类隐藏方法或作为参数等原因需要转换,就想你叫张三,你永远是张三,但你也是人类

收获园豆:5
56180825 | 小虾三级 |园豆:1749 | 2013-10-04 19:47

需要调用父类隐藏方法或作为参数等原因需要转换。你还跟我回答了一个问题:就是既然这样做还是B类型,为什么还要把它的引用类型申明为A,不直接声明为B。只是能不能再详细一点。

Vivu | 园豆:450 (菜鸟二级) | 2013-10-04 20:32

@_珋: 被子类隐藏掉的方法,必须通过转化为父类才能方法。否则只能访问子类的方法

56180825 | 园豆:1749 (小虾三级) | 2013-10-04 21:16

@56180825: 哦哦,懂了,谢谢。那如果前面是个接口呢?

IsomeInterface  a=new B();

这个解释你看对不?B类继承了IsomeInterface这个接口,a对象只能调用IsomeInterface在B类实现的方法吗?

Vivu | 园豆:450 (菜鸟二级) | 2013-10-04 21:25

@_珋: 接口多数用于减少模块之间的耦合性,在很多设计模式中都用到。总的来说你的理解也是对的

56180825 | 园豆:1749 (小虾三级) | 2013-10-05 10:36

@56180825: 非常感谢。

Vivu | 园豆:450 (菜鸟二级) | 2013-10-05 11:10
其他回答(2)
0

A a = new B()这句话分成两步:

B b =new B();

A a = b;

在 a=b,是B类型隐士转换为A,当然A应该是B的父类,而a是实际类型还是B。a,b他们实际是指向的同个对象。

收获园豆:3
一颗小白菜 | 园豆:205 (菜鸟二级) | 2013-10-04 18:41
0

简单一点 A a = new B()  说明A是B的父类

B b = new B()

b 和 a 是 B类型

收获园豆:2
x.y. | 园豆:226 (菜鸟二级) | 2013-10-04 19:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册