错误45'System.Collections.Generic.List(Of String)'不能 转换为'System.Collections.Generic.List(Of Object)'。考虑 使用'System.Collections.Generic.IEnumerable(Of Object)' 代替。 H:\ business \ shared \ Dropbox \ vb.net \ proxyhandler.vb 198 19 nicehash2
这是我得到的错误。替换
System.Collections.Generic.List(Of Object)
带
System.Collections.Generic.IEnumerable(Of Object)
解决了这个问题。
我知道第二种类型是接口。我仍然很困惑。
但为什么?
答案 0 :(得分:2)
由于列表是可变的(您可以添加项目),因此无法将List(Of String)
分配给List(Of Object)
类型的变量(即使每个字符串都是对象)。
每个List(Of T)
也是IEnumerable(Of T)
,但与列表相反,界面不支持修改(不将其强制转换为实际类型)。这就是语言允许使用界面而不是列表的原因。
考虑如果列表本身允许可能会发生什么(C# link):
Dim giraffes As New List(Of Giraffe)
giraffes.Add(new Giraffe())
Dim animals As List(Of Object) = giraffes ' doesn't compile but what happened otherwise:
animals.Add(new Lion()) ' Aargh!