微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以在构造函数中初始化EII属性?

如何解决有没有一种方法可以在构造函数中初始化EII属性?

让我们从MS页面代码开始:

interface ILeft
{
    int P { get;}
}
interface IRight
{
    int P();
}

class Middle : ILeft,IRight
{
    public int P() { return 0; }
    int ILeft.P { get { return 0; } }
}

我想以这种方式更改Middle,EII属性被初始化,就像这样:

class Middle : ILeft,IRight
{
    public int P() { return 0; }
    int ILeft.P { get; }

    Middle()
    {
        ILeft.P = 0;    
    }
}

以上代码无法编译,因此我的问题是-执行此操作是否需要语法

我在询问语法,因为强行方式是声明私有字段并重定向ILeft.P getter以从中返回数据。

解决方法

除了您建议的使用后备字段而不是自动属性的方法外,我认为唯一的其他可能性是使用属性初始化程序语法,例如:

int ILeft.P { get; } = 0;

当然,您不能基于传递给构造函数的参数进行初始化,因此它只能提供有限的附加灵活性。

(有一个提案可以在C#语言中添加“ primary constructors”,可能可以初始化仅获取的显式实现的接口基于构造函数参数的属性,尽管据我所知没有将其包含在语言中的时间表,所以我不会屏息...)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。