如果我有以下情况
public interface IFace
{
int NoseSize {get; set;}
}
public class Face: IFace
{
private int NoseSize;
public int IFace.NoseSize
{
get { return ClassLevel.NoseSize}
set { ClassLevel.NoseSize = value}
}
}
我如何真正指出“ClassLevel”?
答案 0 :(得分:7)
如果您愿意,只需将其称为NoseSize
或this.NoseSize
即可。
顺便说一句,您没有正确实现该接口。如果要使用显式接口实现,则无法指定访问修饰符。
如果要隐式实现接口,则应省略接口名称,并且只需要一个与接口成员名称和签名匹配的公共成员。当然,如果你这样做,你就不能在同一个类中拥有一个具有相同名称的字段。
答案 1 :(得分:3)
您可以通过重命名来缓解名称冲突:
private int NoseSize;
为:
private int noseSize;
我确定它因地区,公司等而异,但我相信将私人会员使用camelCase是典型的。
答案 2 :(得分:1)
将接口视为合同。你所做的是说从你的界面(IFace)派生的任何东西都被设置为拥有这些成员和/或方法。实际实现它们取决于派生类。它为您做的另一件事是为从接口派生的类提供“IsA”关系。
交替地,你可以这样做....
public class Face: IFace
{
public int NoseSize
{
get;
set;
}
public void foo()
{
this.NoseSize = 42;
int someSize = this.NoseSize;
}
}
答案 3 :(得分:1)
您应该使用InterfaceName.Member表示法来引用使用显式接口实现实现的成员。如果省略IInterfaceName。部分它表示您指的是非显式实现的成员(您调用它时的类级别成员)。