14

私は

List<Person> personlist; 

どうすれば変換できますか

IEnumerable<IPerson> iPersonList

Person は IPerson インターフェイスを実装します

4

3 に答える 3

28

.NET 4.0 以降を使用している場合は、暗黙的なキャストを実行できます。

IEnumerable<IPerson> iPersonList = personlist;
//or explicit:
var iPersonList = (IEnumerable<IPerson>)personlist;

これは一般的な反変性 in を使用しIEnumerable<out T>ます。つまり、 から何かを取得するだけなので暗黙的にifIEnumerableに変換できます。(それも使用します。)IEnumerable<T>IEnumerable<U>T : UList<T> : IEnumerable<T>

それ以外の場合は、LINQ を使用して各アイテムをキャストする必要があります。

var iPersonList = personlist.Cast<IPerson>();
于 2013-02-25T16:44:09.527 に答える
4

を使用できます。IEnumerable.Cast

var iPersonList = personlist.Cast<IPerson>();
于 2013-02-25T16:42:21.610 に答える