类与公共类

有什么区别:

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)。

这是有道理的,原因有两个:

  1. 你应该有意识地使事情尽可能less的可见性,以加强你的封装。
  2. 如果他们拖欠public你可能会意外地公开一些应该是私人的或内部的东西。 如果你不小心使某些东西看不到,你会得到一个明显的编译错误并修复它。 如果您不小心使某些东西看起来太明显,那么您的代码中会出现一个不会被标记为错误的缺陷,这将是一个稍后修复的重大更改。

明确你的访问修饰符通常被认为是更好的风格,在代码中更清晰,正是发生了什么。

默认情况下,所有class (以及所有types)都是internal ,所以为了让它们可以从外部访问(像InternalsVisibleToAttribute这样的东西),你必须明确地public它们。