C#:为啥我必须在类的变量中使用公共访问修饰符?

Posted

技术标签:

【中文标题】C#:为啥我必须在类的变量中使用公共访问修饰符?【英文标题】:C#: Why do I have to use the public access modifier in class's vars?C#:为什么我必须在类的变量中使用公共访问修饰符? 【发布时间】:2011-09-27 03:57:26 【问题描述】:

好吧,我初学者,所以..是的,这可能是一个非常愚蠢的问题。 我读到,如果我声明变量或对象,而不提及访问修饰符(公共、私有等),它会自动使其具有 Internal 访问修饰符(并且它将存在于当前的任何地方命名空间)。

那么为什么我需要在一个类中将我的 vars 设置为 Public 才能让它们进入另一个类(例如我的程序的类)。

【问题讨论】:

我很确定默认是私有的,而不是内部的。 ***类型的默认值是内部 @Captain Comic:他说的是变量/对象,所以他可能指的是字段,而不是类型。 是的,我想说他(问题作者)可能读过类型 旁白:您提到“vars”,我假设您的意思是“字段”。字段不应暴露 - 它们应该是 private。如果要公开数据,请使用 property. 【参考方案1】:

因为你不识字?好吧,开玩笑的。你说你是初学者,所以忽略一些小事是很正常的。

我读到如果我声明变量或对象,而没有提及访问修饰符(公共, 私人等)而不是自动使其具有内部访问修饰符

啊,不。它默认为 privateNOT 为内部。它默认为最合理的默认值,内部仍然允许大量跨类访问,从而导致不良代码实践。

【讨论】:

非常感谢!我在一本书里又读了一遍,作者确实说它是内部的,但是哦,好吧。感谢您的帮助 啊,我们开始吧。规则一:书籍并不完美。至少退回到官方文档;) @Ken 我有点好奇想知道那本书是什么? 我还要补充一点,public 允许您在其他程序集中使用这些类。 Internal 在程序集中是“全局的”。

以上是关于C#:为啥我必须在类的变量中使用公共访问修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

c# 的类成员

java 访问修饰符

为啥我们不能在 C# 中覆盖方法时更改访问修饰符?

C# 中类和变量的默认访问修饰符? [复制]

如果在类中的成员没有加修饰符,则被认为是private的

2017-4-14访问修饰符 封装 继承 多态