获取变量的类级实例(不是接口)

时间:2010-01-27 23:58:08

标签: c# .net interface

如果我有以下情况

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”?

4 个答案:

答案 0 :(得分:7)

如果您愿意,只需将其称为NoseSizethis.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。部分它表示您指的是非显式实现的成员(您调用它时的类级别成员)。