あなたのコード例は非常に紛らわしく、コンパイルできません。ただし、List<T>.this
構文に関する質問に答えるには:
これは、明示的なインターフェイスの実装と呼ばれます。これを使用してインターフェイスを実装しますが、クラスの公開署名からは隠します。以下に小さな例を示します。
public class Foo : IDisposable {
public void Dispose() {
}
}
public class Bar : IDisposable {
public void Close() {
}
void IDisposable.Dispose() {
Close();
}
}
どちらのクラスも実装しますがIDisposable
、 a を破棄するBar
には を呼び出す必要がありますClose
。にキャストしてからIDisposable
呼び出すこともできますDispose
。
var foo = new Foo();
foo.Dispose();
var bar = new Bar();
bar.Close();
((IDisposable) bar).Dispose();
クラスFoo
のBar
場合、 cleanup メソッドが呼び出されるDispose
かどうかは重要ではないかもしれませんがClose
、クラスの場合は、代わりにそれFile
を好むかもしれません。その他の用途は、オブジェクト間の相互作用に参加するために実装する必要があるインターフェイスを非表示にすることですが、クラスのコンシューマーには表示されたくない場合です。または、競合するメソッドを持つ複数のインターフェイスの実装を回避するために使用できます。Close
Dispose
MSDN で明示的なインターフェイスの実装について読むことができます。