【问题标题】:In C# can we ever use protected access modifier for an interface?在 C# 中,我们可以对接口使用受保护的访问修饰符吗?
【发布时间】:2015-12-25 16:22:30
【问题描述】:

接口的默认访问修饰符是公共的。然而, 在 C# 中,我们可以对接口使用受保护的访问修饰符吗?

【问题讨论】:

  • 你是指接口的成员,还是接口本身? 已编辑 接口的所有声明成员始终是公共的。如果接口嵌套在非静态、非密封的外部class 中,则接口本身的可访问性可以是protected
  • 据我记忆,您不能为接口成员指定访问修饰符。
  • 当然,您可以声明一个受保护的嵌套接口。为什么你会做这样的事情很难猜到。

标签: c#


【解决方案1】:

在这个例子中:

class C
{
  protected interface I
  {
  }
}

嵌套类型Iprotected

这意味着I 对所有C 以及从C 派生的所有类都可见。例如,这可用于在 C 中创建 protected 实例方法,在其签名或返回类型中包含 I

注意:界面的默认可访问性不是public,就像您声称的那样。接口的成员的默认可访问性是public。那是另一回事。

接口本身的默认可访问性取决于接口本身是什么成员。如果接口是“外部”classstruct 的成员(如我上面的C),它通常具有classstruct 成员的默认可访问性,即private。如果接口是namespace(可能是全局命名空间)的直接成员,则默认可访问性是所有非嵌套类型的通常默认值,即internal

【讨论】:

    【解决方案2】:

    您可以更改此可访问性。

    查看此页面:https://msdn.microsoft.com/en-us/library/ms173121.aspx

    据说“直接在命名空间中声明的接口可以声明为公共的或内部的,就像类和结构一样,接口默认为内部访问。”

    请注意,正如您在此链接中看到的那样,https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx 成员默认是公开的,无法修改。

    【讨论】:

    • 该页面讨论的是成员的可访问性,而不是界面本身。
    • 这个link 谈论接口及其成员。
    猜你喜欢
    • 2013-03-05
    • 1970-01-01
    • 2013-04-03
    • 2019-05-07
    • 2014-12-29
    • 2015-11-27
    • 2020-05-03
    相关资源
    最近更新 更多