C#中的访问修饰符

Tay*_*orE 3 c# private access-modifiers

我正在教自己C#,我遇到了一些模棱两可的情况.

我正在尝试做的是为一些数据创建一个容器类,相当直接,但我试图尊重封装,并且只能通过setter和getter访问数据.所以我正在阅读有关访问修饰符的内容,根据 此MSDN文章,默认访问级别为内部.我来自Java-land所以我不熟悉内部,但是从该页面上的资源来看,内部看起来比我想要的更宽松.所以我想把东西设为私人.

我的困惑来自这里的代码示例.看起来如果我这样做

class whatever {
    private int thing;
    string ambiguous; 
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dai*_*Dai 8

该领域ambiguous根本不含糊.C#规范声明,如果类成员没有访问修饰符,则默认为private.

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

class Foo {
    int bar;
    class Nested {
        int baz;
    }
}
Run Code Online (Sandbox Code Playgroud)

相当于

internal class Foo {
    private int bar;
    private class Nested {
        private int baz;
    }
}
Run Code Online (Sandbox Code Playgroud)