[疑问]关于泛型方法中类型转换的问题
昨天写一个泛型方法遇到的。
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))
--------------------编程问答--------------------
没看懂你的意思。
我的疑问是:既然我已经可以确定 obj的类型是T,为什么我用 Ctype 把 obj转换成 T会编译不通过? --------------------编程问答--------------------
能解释一下吗? --------------------编程问答-------------------- 物理反应?化学反应? --------------------编程问答--------------------
??
补充:.NET技术 , .NET Framework