2012-02-10 4 views
2

.Net Frameworkでは、List<T>ICollection<T>インターフェイスを実装しています。しかし、Visual StudioでListクラスを見ると、ICollection<T>インターフェイスにあると思われるIsReadOnlyプロパティは表示されません。リストはどこですか?<T> .IsReadOnly?

クラスがインターフェイスを実装するにはどうしたらいいですか...実際には実装していないのですか?

答えて

5

explicit interface implementationを使用します。例えば:

public interface IFoo 
{ 
    void Bar(); 
} 

public Foo : IFoo 
{ 
    // Note the lack of public here 
    void IFoo.Bar() {} 
} 
+0

オブジェクトがこのように「IDisposable」を実装すると嫌です。あなたは '.D'と打ち、' Dispose'は出てこないと思うので、実際に処分されなければならないので、何年も後にあなたはそのオブジェクトを '使用していたはずです。 – GSerg

2

IsReadOnlythe documentationの明示的インターフェイスの実装セクションの下にリストされています。

1

明示的なインターフェイス実装を使用して作成されています。この特定のインターフェイスとしてリストを使用する場合にのみ、実装を見ることができます。

List<int> x = new List<int>(); 

bool b1 = x.IsReadOnly; // not accessible 

ICollection<T> y = x; 

bool b2 = y.IsReadOnly; // accessible