C_Sharp 板


LINE

class MyList<T>{} interface IBase{} interface ISub:IBase{} 如上,ISub 继承 IBase ,令: var a = new MyList<ISub>(); var b = (MyList<IBase>)a; 这时b强制转型会造成错误。 我知道因为泛型会在执行阶段 产生特殊版本来跑不同型别输入, 因该是因为这原因让编译器认定 a,b 是两种不同的型别, 但若有强制转换需求该怎麽做? ----- Sent from JPTT on my HTC_U-1u. --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.255.216.59
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1507097286.A.66F.html
1F:→ Litfal: 是要丢给别的method用?还是?10/04 14:23
2F:→ Litfal: 用 a.Select(s=>(IBase)s).ToList() 另外建一个List比较10/04 14:23
3F:→ Litfal: 简单,不然你就要把MyList<T> 拉一个介面出来,然後写成10/04 14:26
4F:→ Litfal: IMyList<out T>,不过会有一些问题你要自己摸索 XD10/04 14:26
5F:→ Litfal: 因为你的MyList如果真的是个List,那麽会有in会有out,10/04 14:27
我想把 MyList<ISub> MyList<IBase> 放入 Dictionary<int, T > 去统一管理, 但 T 不论是宣告成什麽, 都无法储存。 ※ 编辑: noodleT (111.255.216.59), 10/04/2017 14:56:11
6F:→ Litfal: 你不可能放进去不转型拿出来也不转型阿 10/04 15:32
7F:→ Litfal: 你可以把狗丢到动物园里面,但动物园出来不一定是狗 10/04 15:33
8F:→ Litfal: 可以从狗屋里面拿出一只动物,但不能把任何动物丢进狗屋 10/04 15:34
9F:→ Litfal: 你想想你的问题,b=a; b.Add(base),base怎麽塞入a? 10/04 15:36
10F:→ Litfal: 一般来说,集合会用基底的类别或介面,然後再用多型直接用 10/04 15:37
11F:推 s4300026: 为什麽不用内建的collection list 10/05 07:54
12F:推 s4300026: 这问题我当初的解法是list<base>,然後取出後is as转想 10/05 07:57
13F:→ s4300026: 要的,就楼上的解法。 10/05 07:57
14F:推 CloudyWing: 泛型宣告T前面加out 让他支援协变 10/07 15:46
15F:→ CloudyWing: 不过out要用到介面,所以要先订一个interface给List实 10/07 15:48
16F:→ CloudyWing: 作 10/07 15:48
17F:→ noodleT: 不用内建的是因为我要在 MyList 加入执行绪锁。如果类别 10/12 08:10
18F:→ noodleT: 无法互相转型,那只能分开放了。 10/12 08:10
19F:→ james732: 内建有执行绪安全的容器,不符合你的需求吗? 10/12 23:25
20F:→ james732: 我同s4300026,会用is as来转 10/12 23:25
21F:→ noodleT: 因为我需要在整个 for each loop 都将资料阵列锁住,避免 10/12 23:37
22F:→ noodleT: 其他人 add , remove 10/12 23:37
23F:→ noodleT: 所以原本内建集合没办法达到要求 10/12 23:39
24F:推 s4300026: 应该没帮助,但加减看XD 10/17 20:34
25F:→ s4300026: https://i.imgur.com/P12bfMZ.jpg 10/17 20:35
26F:推 s4300026: https://i.imgur.com/MPDIgLH.jpg 10/17 20:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP