定义一个接口:    public interface IA
    {
        void GetValue();
    }
请问下面这两种接口实现是相同的功能吗?有什么区别吗?
    // 第一种
    public class A : IA
    {
        public void GetValue()
        {
        }
    }
    //第二种
    public class A : IA
    {
        void IA.GetValue()
        {
        }
    }

解决方案 »

  1.   

    void IA.GetValue()
    这种格式,是为了去掉歧义。 如果一个类实现两个接口,这两个接口定义了同样的函数。会有歧义,例如 public interface IA
        {
            void GetValue();
        }
     public interface IB
        {
            void GetValue();
        }public class A : IA,  IB
        {
            void IA.GetValue()
            {
            }        void IB.GetValue()
            {
            }    }
      

  2.   


    不仅仅是这样吧,类似第二种方法的话 //第二种
        public class A : IA
        {
            void IA.GetValue()
            {
            }
        }在外面根本无法调用,void main()
    {
    A a = new A();
    a.GetValue();//根本调用不到
    }
      

  3.   


    我的意思和你差不多,我刚才加了一个public 在外面还是调用不到
      

  4.   


            public interface IA
            {
                void GetValue();
            }        public class A :IA
            {
                public void IA.GetValue()
                {
                }
            }        public class AA : IA
            {
                public AA()
                {
                    A a = new A();                a.GetValue();
                }
            }
    这样写确实调用不到啊,a.GetValue()
      

  5.   

    这个只是一个接口的是显式实现和隐式实现而已
    显示实现只有接口可以访问。
    隐式的话外部可以访问。
    显式的好处:
    1:隐藏代码的实现 
    2:在使用接口访问的系统中,调用者只能通过接口调用而不是底层的类来访问。 这个在SOA架构的系统中很突出。
    最后:接口默认就是public的。
      

  6.   

    谢谢楼上,我也刚找到答案了http://blog.csdn.net/NETZHOU/archive/2008/01/22/2058464.aspx其实我一般都是隐式实现,今天看见有人的WCF程序是这样写的