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

[疑问]关于泛型方法中类型转换的问题

昨天写一个泛型方法遇到的。


public sub getlist(of T)(obj as control , byref objList as list(of T))
    if typeof(obj) is T then 
       objList.add(Ctype(obj,T))
    end if
end sub


if typeof( .....这里是没有问题的。
CType这里是有问题,提示obj不能转换为T。
如果写成objList.add(obj)也是有问题的,提示也一样。
我想知道,Why啊?

后来用 objList.add(Ctype(obj,object))可以解决,不过想知道原因。MSDN上没找到相关的介绍。 --------------------编程问答-------------------- 你加的代码是objList.add(Ctype(obj,T))当然要在T上加个 object啦 --------------------编程问答-------------------- 你可以去看看is 和 as 的区别,就知道其中的原因了 --------------------编程问答-------------------- objList.add(Ctype(obj,T))
=>
(objList as list(of T)).add(Ctype(obj,T))
--------------------编程问答--------------------
引用 1 楼 qiujialongjjj 的回复:
你加的代码是objList.add(Ctype(obj,T))当然要在T上加个 object啦


没看懂你的意思。
我的疑问是:既然我已经可以确定 obj的类型是T,为什么我用 Ctype 把 obj转换成 T会编译不通过? --------------------编程问答--------------------
引用 3 楼 wushuai1346 的回复:
objList.add(Ctype(obj,T))
=>
(objList as list(of T)).add(Ctype(obj,T))


能解释一下吗? --------------------编程问答-------------------- 物理反应?化学反应? --------------------编程问答--------------------
引用 6 楼 porenasckx 的回复:
物理反应?化学反应?


??
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,