C# 中的访问修饰符

Posted

技术标签:

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

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

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

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

class whatever 
    private int thing;
    string ambiguous; 

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

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

【问题讨论】:

【参考方案1】:

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

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

class Foo 
    int bar;
    class Nested 
        int baz;
    

等价于

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

【讨论】:

如果不清楚,***类型的默认访问级别是内部的。嵌套类型默认为私有。该规范认为嵌套类型是静态类成员。

以上是关于C# 中的访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章

C#语言中的修饰符汇总

C#中的默认访问修饰符

C# 中的访问修饰符

C#访问修饰符

访问修饰符

C# 基础 访问修饰符ref与out标志枚举等等