类与公共类
有什么区别:
namespace Library{ class File{ //code inside it } }
和:
namespace Library{ public class File{ //code inside it } }
那么公共课和class级有什么区别呢?
没有指定public
这个类是隐含的internal
。 这意味着该类仅在同一个程序集内可见。 当你指定public
,这个类在程序集外是可见的。
也可以明确指定internal
修饰符:
internal class Foo {}
前者相当于:
namespace Library{ internal class File{ //code inside it } }
所有的可见性默认为最不可见的 – 对于class
ES和struct
(方法,属性,字段,嵌套类和嵌套enum
)的成员是私有的,对于namespace
的直接成员是internal
的,因为它们不能是私有的。
internal
意味着在同一个程序集中的其他代码可以看到它,但没有别的(禁止朋友程序集和使用reflection)。
这是有道理的,原因有两个:
- 你应该有意识地使事情尽可能less的可见性,以加强你的封装。
- 如果他们拖欠
public
你可能会意外地公开一些应该是私人的或内部的东西。 如果你不小心使某些东西看不到,你会得到一个明显的编译错误并修复它。 如果您不小心使某些东西看起来太明显,那么您的代码中会出现一个不会被标记为错误的缺陷,这将是一个稍后修复的重大更改。
明确你的访问修饰符通常被认为是更好的风格,在代码中更清晰,正是发生了什么。
默认情况下,所有class
(以及所有types)都是internal
,所以为了让它们可以从外部访问(像InternalsVisibleToAttribute
这样的东西),你必须明确地public
它们。