5

List<T>.net での定義は、さまざまなインターフェイスを実装していることを示しています。

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

を持っている場合と持っていない場合のインターフェイスの変更は何をTもたらしますIListか。つまり、クラスの 1 つが を実装していて実装IList<T>していないIList場合、それをカスタム コレクション クラスとして使用できますか?

4

3 に答える 3

13

と の両方をList<T>実装する理由は、コードが. これにより、ジェネリックの方が適切であるため、ジェネリックへの移行がより簡単になります。また、クラスが .net 2.0 以降のアセンブリに実装されていても、再利用したい .net 1.1 以前のコードがある場合は、それが可能になります。IList<T>IListIListIList<T>

于 2012-12-22T12:14:28.487 に答える
6

ではIList<T>、定義された(T)タイプのオブジェクトのみを配置でき、IListにはさまざまなタイプのオブジェクトを含めることができます

AdressInformation が顧客リストの有効なオブジェクトではないため、以下のコードは準拠しません。

IList<Customer> customers = new List<Customer>();
customers.Add(new Customer());
customers.Add(new AdressInformation());

このコードはコンパイルされますが、実行時に例外がキャストされます

IList customers = new List<Customer>();
customers.Add(new Customer());
customers.Add(new AdressInformation());
于 2012-12-22T12:08:00.447 に答える