在C#中,实现接口时有两种方式,implicitly和explicitly,形式上一目了然,但我不太明白之间的区别,查了MSDN也没有这方面的解释。向大家请教一下。

解决方案 »

  1.   

    一种是直接的
    接口方法名和实现类方法名一样,且都是public
    另一种是
    接口方法名和实现类方法名不一样,
    例如
    DbConnection类用Close实现IDispose.Dispose。
      

  2.   

    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);
    } }
     
     
      

  3.   

    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(){}而非接口的实现
    代码是瞎写的,意思是这样子的
      

  4.   

    接楼上,
    ia.set()必须将 aa显示转换为ia接口类型之后才能调用,直接aa.set()调用的是public void set(){}方法
      

  5.   

    同意楼上的
    explicitly interface method name 完全区别接口方法名称
    代表的含义是,实现接口的方法的名称前必须加上接口的名称
      

  6.   

    《.NET框架程序设计》讲得非常清楚。建议所有人都买一本,呵呵,这书对.NET开发人员来说确实非常重要。