【问题标题】:Implementing n interface explicitly using Visual Studio使用 Visual Studio 显式实现 n 接口
【发布时间】:2023-04-11 10:31:02
【问题描述】:

我在使用 Visual Studio 显式实现 n 接口时遇到了这个问题。所以接口包含属性,但是当我在抽象类中显式实现属性时,编译器会抛出错误“修饰符'public'对此项无效”。

参考下面给出的代码。

interface ITest
{
    bool MyProperty { get; set; }
}

internal class Test : ITest
{
    public bool ITest.MyProperty
    {
        get
        {
            return false;
        }    

        set { }
    }
}

【问题讨论】:

  • 所以去掉public修饰符。

标签: c# properties interface explicit


【解决方案1】:

根据programming guide,显式接口实现总是缺少访问修饰符。您应该删除 public 关键字。

如果你仔细想想,这很有意义。显式接口实现只有一个可能的访问修饰符 - 用于接口的相同修饰符。因此,您无需指定修饰符。

如果接口标记为public,而显式实现为private,则没有意义。编写显式实现的唯一原因是将该成员仅公开给该接口。如果成员比界面更难访问,那会很奇怪,对吧?

另一方面,如果接口是internal,并且成员标记为public,也没有意义。如果成员比接口更容易访问,那么它不会只暴露给接口。

【讨论】:

  • 谢谢你清扫。你解释得很好。明白了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多