interface ISampleInterface
{
void SampleMethod();
}
interface ISampleInterface2
{
void SampleMethod();
}你这两个接口里面的函数没有声明访问权限,C#默认为是private所以在所有实现这两个接口的函数里面,都不能再声明为比private更开放的权限

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView3.asp?id=5392749
    这个帖子说的很清楚,道理是一样的
      

  2.   

    为了消除歧异,同名接口函数访问限制是private的。只能通过全名访问ISampleInterface2.SampleMethod在《.Net框架高级编程》一书中有详细的解释。
      

  3.   

    sunrobust(咸鱼---翻身理想不灭) 
    说的不对。定义接口时 是无法设置访问级别的,所有的接口默认(也只能是)public的。
      

  4.   

    接口包含的方法和成员默认且必须是public的!!
      

  5.   

    //显式调用接口
    interface ISampleInterface
    {void SampleMethod();}
    class ImplementationClass : ISampleInterface
    {
        void ISampleInterface.SampleMethod()
        {
            System.Windows.Forms.MessageBox.Show("test");

        }
        static void Main()
        {
    ImplementationClass ic=new ImplementationClass();
    ISampleInterface ii =ic;
    ii.SampleMethod();
        }
    }
      

  6.   

    //这样也可以,加了关键字public ,virtual 也没问题
    interface ISampleInterface
    {void SampleMethod();}
    class ImplementationClass : ISampleInterface
    {
       public virtual void SampleMethod()
        {
            System.Windows.Forms.MessageBox.Show("test");

        }
        static void Main()
        {
    ImplementationClass ic=new ImplementationClass();
    ic.SampleMethod();
        }
    }
      

  7.   

    使用显示接口实现来定义的一个方法不能声明为virtual,但在省略接口名之后允许。
    使用显示接口实现,方法不应有一个访问修饰符。用于实现一个接口的所有方法都具有public可访问性。
    本书的建议尽可能显示实现接口
    《visual C#2005从入门到精通》p166 显示接口的优点。
      

  8.   

    《visual C#2005从入门到精通》  微软出版社
      

  9.   

    默认的情况下本来就是public的
      

  10.   

    //定义两个接口,有相同的方法
    interface ISampleInterface
    {
        void SampleMethod();
    }
    interface ISampleInterface2
    {
        void SampleMethod();
    }
    //定义一个类实现接口,显式实现接口.
    class ImplementationClass : ISampleInterface,ISampleInterface2
    {
        public void SmapleMethod(string msg)
        {
            System.Windows.Forms.MessageBox.Show(msg);
        }    void ISampleInterface.SampleMethod()
        {
            this.SampleMethod("test");    }
        void ISampleInterface2.SampleMethod()
        {
            this.SampleMethod("test2");    }}
      

  11.   

    接口的成员要么是Public的,要么就是隐式的(没有访问修饰符)按你的类的代码来说,你不是“显式实现接口”,而是隐式实现的。所以没有public也是正常的。
      

  12.   

    TO:hbxtlhx(平民百姓) 
    "ISampleInterface.SampleMethod()",这样不是显式接口实现吗?MSDN里面都是这样描诉的.
    void ISampleInterface.SampleMethod()
        {
            this.SampleMethod("test");    }
      

  13.   

    TO: 21aspnet(清清月儿)
    使用显示接口实现来定义的一个方法不能声明为virtual,但在省略接口名之后允许。
    使用显示接口实现,方法不应有一个访问修饰符。用于实现一个接口的所有方法都具有public可访问性。
    本书的建议尽可能显示实现接口
    《visual C#2005从入门到精通》p166 显示接口的优点。是啊,没错,现在就是不知道为什么使用显示接口实现来定义的一个方法不能声明为virtual,假如还有子类要重写这个方法,那不是做不到了吗..
      

  14.   

    TO:sunrobust(咸鱼---翻身理想不灭) 
    你说:interface ISampleInterface
    {
    void SampleMethod();
    }
    interface ISampleInterface2
    {
    void SampleMethod();
    }你这两个接口里面的函数没有声明访问权限,C#默认为是private所以在所有实现这两个接口的函数里面,都不能再声明为比private更开放的权限----------------------------------
    接口里面的成员默认都是public的把!!
      

  15.   

    显示实现的接口不能是Public的。
    上面说错了。
      

  16.   

    像指定了接口类型的接口实现都不能有public了,在使用上也只能是通过(强制)转换获取对接口的应用。