【问题标题】:Access modifiers in C#C# 中的访问修饰符
【发布时间】:2015-04-11 07:28:45
【问题描述】:

我正在自学 C#,但我遇到了一些模棱两可的情况。

我要做的是为一些数据创建一个容器类,这相当简单,但我试图尊重封装,并且只能通过 setter 和 getter 访问数据。所以我正在阅读有关访问修饰符的信息,根据This MSDN article ,默认访问级别是内部。我来自 Java 领域,所以我不熟悉 internal,但是从该页面上的资源来看,看起来 Internal 比我想要的更宽松。所以我想将其设置为私有。

我的困惑源于代码示例here。看起来如果我这样做了

class whatever {
    private int thing;
    string ambiguous; 
}

模棱两可的变量将是私有的,而不是内部的。

它真的像那样工作吗?还是第二个例子写错了?

【问题讨论】:

    标签: c# private access-modifiers


    【解决方案1】:

    ambiguous 字段一点也不模棱两可。 C# 规范规定,在类成员上没有访问修饰符的情况下,它默认为private

    顶级类型的默认访问级别是内部的。

    class Foo {
        int bar;
        class Nested {
            int baz;
        }
    }
    

    等价于

    internal class Foo {
        private int bar;
        private class Nested {
            private int baz;
        }
    }
    

    【讨论】:

    • 如果不清楚,顶级类型的默认访问级别是内部的。嵌套类型默认为私有。该规范认为嵌套类型是静态类成员。
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2018-03-06
    • 2011-04-10
    • 2011-06-13
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多