作者dreak (dreak)
看板C_Sharp
标题[问题] 不同型态物件存在同个List
时间Tue Jan 14 17:29:59 2014
各位好
目前碰到的问题是,我想把不同类型的物件储存在同个List,
目前的作法如下,
建立一个BaseClass(里面包含共用的function),
再分别写A、B、C三个Class继承BaseClass,
在A、B、C中分别包含了独立的function(BassClass里没有的function),
然後在主程式建立A、B、C这三个物件时,分别塞入List<BaseClass>这个List中,
这样做看似是可行,但当我想要呼叫A物件里独立的function时(BassClass里没有),
似乎没有办法,请问我这样的作法是对的吗?或者有什麽更好的作法?
有什麽方法可以让我呼叫A物件里独立的function?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.67.102.9
1F:推 Eleganse:关键字:list泛型 01/14 18:03
泛型指得不是我上述的List<BaseClass>吗?还是我理解有误?
※ 编辑: dreak 来自: 42.67.102.9 (01/14 18:19)
2F:→ m339606:你已经指出问题了 BaseClass没有A的独立function 01/14 20:07
3F:→ m339606:A的Class结构在进去List时已经被转换了,类似(BaseClass)A 01/14 20:08
4F:→ m339606:你只要取出来的时候再转换回A就好 ((A)List[?]).fun() 01/14 20:08
5F:→ m339606:如果你说同时会有ABC的List就比较麻烦了 01/14 20:09
6F:→ m339606:编译时你并不知道他是哪个,建议用GetType搭配Reflection 01/14 20:11
7F:→ m339606:当然最简单的方式就是将abc各自独立的Fun全部写进去Base 01/14 20:11
8F:→ m339606:然後将Base的fun宣告成virtual让子类实现 01/14 20:12
9F:→ ssccg:如果你ABC没有共通的功能要呼叫,塞在一起有什麽好处? 01/14 21:19
10F:→ m339606:华生你突破盲肠炎了 01/14 23:33
谢谢两位的回覆,小弟在第一行有说明这只BaseClass有共用的Function,
不过经过两位的指点已经有方向了,谢谢。
※ 编辑: dreak 来自: 42.67.102.9 (01/15 10:01)