【问题标题】:protected access modifiers in .net [duplicate].net中受保护的访问修饰符[重复]
【发布时间】:2012-03-25 20:05:36
【问题描述】:

我使用MSDN 网站上提供的示例创建了一个描述受保护访问修饰符的应用程序,但它似乎容易出错,下面是我正在使用的代码:

以下是来自 MSDN 网站的示例:

【问题讨论】:

  • 你发布的是代码图片??
  • @vulkanino 如果它有大的红色手绘圆圈是可以容忍的。
  • 我在阻止 SE 图像的防火墙后面。我看不到代码。

标签: c# protected access-modifiers


【解决方案1】:

定义Main 的AccessModifiersCSharp 类不继承自Class1,因此无法访问其protected 成员。

您可以从您的Class2 访问Method1,因为它确实继承自Class1。

您的代码与 MSDN 代码之间的区别在于,包含 Main 的类 B 直接继承自 A。

【讨论】:

    【解决方案2】:

    类 A 的受保护成员只能从派生自 A 的类访问。

    这意味着 Class2 可以访问 Method1(),但不能访问 AccessModifiersCSharp

    见msdn

    如果要编译代码,需要将 Method1() 声明为 public 或 internal。

    【讨论】:

      【解决方案3】:

      将 Main() 方法放在 Class2 中,而不是 AccessModifiersCSharp 类! AccessModifiersCSharp 不是从 Class1 派生的,因此无法访问其受保护的成员和方法。

      【讨论】:

        【解决方案4】:

        在您引用的文章中,Main 是 B 的一个方法,这就是为什么它可以访问 B 的受保护成员,并通过继承访问 A 的受保护成员。

        【讨论】:

          【解决方案5】:

          受保护的成员可以从它所在的类中访问 声明的,并且在从该类派生的任何类中 声明了这个成员

          意思是:你可以在 Class1 方法和 Class2 方法中访问 Methode1。并且只能在 Class2 方法中访问 Method2。

          AccessModifiersCSharp 类中的Main() 方法。并且只能访问 Class1 和 Class2 的公共方法。

          【讨论】:

            猜你喜欢
            • 2019-05-07
            • 2015-02-11
            • 2013-03-05
            • 1970-01-01
            • 2013-04-03
            • 2014-12-29
            • 2016-04-03
            相关资源
            最近更新 更多