类与公共类
有什么区别:
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它们。