2017-06-22 14 views
0

エラー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なぜこの1つのタイプに変換できますか?

これは私が持っているエラーです。

System.Collections.Generic.IEnumerable(Of Object) 

System.Collections.Generic.List(Of Object) 

を交換すると、問題を解決します。

私は、第2のタイプがインターフェースであることに気付いています。私はまだ混乱している。

なぜですか?

答えて

2

リストは変更可能です(項目を追加することもできます)List(Of Object)の変数にList(Of String)を割り当てることはできません(すべての文字列がオブジェクトであっても)。

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! 
関連する問題