public class TcpClient : IDisposable { public void Close(); protected virtual void Dispose(bool disposing); private void IDisposable.Dispose();public void Close() { ((IDisposable) this).Dispose(); } void IDisposable.Dispose() { this.Dispose(true); GC.SuppressFinalize(this); } }
implicitly是隐式的实现 explicitly是显式的实现他们有不同的作用的,explicitly一般都是直接的实现为public的,没有什么好说的 implicitly有他的作用,有时为了隐藏接口的实现,就有他的作用了,比如 interface ia{ void set(); }public class a :ia{ void ia.set() { } public void set(){} } a aa= new a(); aa.set();//这时调用的是 public void set(){}而非接口的实现 代码是瞎写的,意思是这样子的
接口方法名和实现类方法名一样,且都是public
另一种是
接口方法名和实现类方法名不一样,
例如
DbConnection类用Close实现IDispose.Dispose。
{
public void Close();
protected virtual void Dispose(bool disposing);
private void IDisposable.Dispose();public void Close()
{
((IDisposable) this).Dispose();
}
void IDisposable.Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
} }
explicitly是显式的实现他们有不同的作用的,explicitly一般都是直接的实现为public的,没有什么好说的
implicitly有他的作用,有时为了隐藏接口的实现,就有他的作用了,比如
interface ia{
void set();
}public class a :ia{
void ia.set()
{
}
public void set(){}
}
a aa= new a();
aa.set();//这时调用的是 public void set(){}而非接口的实现
代码是瞎写的,意思是这样子的
ia.set()必须将 aa显示转换为ia接口类型之后才能调用,直接aa.set()调用的是public void set(){}方法
explicitly interface method name 完全区别接口方法名称
代表的含义是,实现接口的方法的名称前必须加上接口的名称