您的代码示例非常混乱,无法编译。但是,要回答有关List<T>.this
语法的问题:
这称为显式接口实现。您可以使用它来实现接口,但将其隐藏在类的公共签名中。这是一个小例子:
public class Foo : IDisposable {
public void Dispose() {
}
}
public class Bar : IDisposable {
public void Close() {
}
void IDisposable.Dispose() {
Close();
}
}
这两个类都实现IDisposable
了,但要处理Bar
你必须调用Close
. 您也可以将其转换为IDisposable
然后调用Dispose
.
var foo = new Foo();
foo.Dispose();
var bar = new Bar();
bar.Close();
((IDisposable) bar).Dispose();
对于类Foo
,Bar
如果调用清理方法可能并不重要,Dispose
或者Close
对于一个File
类,您可能更喜欢Close
它而不是Dispose
它。其他用途是隐藏您必须实现的接口以参与对象之间的交互,但您不希望对类的消费者可见。或者,您可以使用它来解决使用冲突方法实现多个接口的问题。
您可以在 MSDN 上阅读有关显式接口实现的信息。