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# 中的访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章