.Net Frameworkでは、List<T>
はICollection<T>
インターフェイスを実装しています。しかし、Visual StudioでListクラスを見ると、ICollection<T>
インターフェイスにあると思われるIsReadOnly
プロパティは表示されません。リストはどこですか?<T> .IsReadOnly?
クラスがインターフェイスを実装するにはどうしたらいいですか...実際には実装していないのですか?
.Net Frameworkでは、List<T>
はICollection<T>
インターフェイスを実装しています。しかし、Visual StudioでListクラスを見ると、ICollection<T>
インターフェイスにあると思われるIsReadOnly
プロパティは表示されません。リストはどこですか?<T> .IsReadOnly?
クラスがインターフェイスを実装するにはどうしたらいいですか...実際には実装していないのですか?
explicit interface implementationを使用します。例えば:
public interface IFoo
{
void Bar();
}
public Foo : IFoo
{
// Note the lack of public here
void IFoo.Bar() {}
}
IsReadOnly
はthe documentationの明示的インターフェイスの実装セクションの下にリストされています。
明示的なインターフェイス実装を使用して作成されています。この特定のインターフェイスとしてリストを使用する場合にのみ、実装を見ることができます。
List<int> x = new List<int>();
bool b1 = x.IsReadOnly; // not accessible
ICollection<T> y = x;
bool b2 = y.IsReadOnly; // accessible
オブジェクトがこのように「IDisposable」を実装すると嫌です。あなたは '.D'と打ち、' Dispose'は出てこないと思うので、実際に処分されなければならないので、何年も後にあなたはそのオブジェクトを '使用していたはずです。 – GSerg