例如
class UseInerface:IComparable
{
private int num;
public UseInerface(int num)
{
this.num=num;
}
public int CompareTo(Object obj)       //重写CompareTo函数
{
UseInerface otherObject=obj as UseInerface;
if(otherObject==null)
throw new ArgumentException("error");
if(num<otherObject.num)       //使用私有成员num
return -1;
else if(num>otherObject.num)
return 1;
else
return 0;
}
}
class Test

public static int Main()
{
UseInerface class1=new UseInerface(1);
UseInerface class2=new UseInerface(2);
Console.WriteLine(class1.CompareTo(2)); return(0);
}
}

解决方案 »

  1.   

    为什么不能访问呢?
    接口只是对一个类应该有些什么方法做出规范,而具体实现是由该类自己实现的,所以和他直接写一个这样的方法也没什么不同的,自然可调用它的私有成员。
    另外你写得是不是应该为public override int CompareTo(Object obj)才能编译通过?
      

  2.   

    因为你还在class UseInerface上下文里面
      

  3.   

    回2楼的,我没有使用override也能编译通过
      

  4.   

    楼主.你只要记得一句话:接口定义,类中实现,抽象隐含(virtual),类中覆盖(override)
      

  5.   

    我刚才试图在CompareTo方法里访问另一个类的私有成员结果失败。看来不论如何通过属性来访问是最合适的,免得出问题
      

  6.   

    private 是相对于类的外部的啊 ~   你的 private int num  是在内部 所以无所谓 private不private
      

  7.   

    IComparable接口的扩展,自然在经承类可以使用经承类自己的数据了。兄弟级别不可访问,除非是友元。
      

  8.   

    哈哈,要不是速马那句话,我也差点儿被骗了。这个和接口无关,因为你在UseInterface类的上下文内,所以可以访问同样为UserInterface 类型的对象的私有成员。这种能力对实现Equals方法或运算符重载、复制构造等功能非常重要