班级与公共班级

时间:2012-09-12 16:47:44

标签: c# class public

有什么区别:

namespace Library{
    class File{
        //code inside it
   }
}

namespace Library{
   public class File{
       //code inside it
   }
}

那么公共类之间的区别是什么?

3 个答案:

答案 0 :(得分:58)

如果没有指定public,则该类隐式internal。这意味着该类仅在同一个程序集中可见。指定public时,该类在程序集外部可见。

还允许明确指定internal修饰符:

internal class Foo {}

答案 1 :(得分:21)

前者相当于:

namespace Library{
    internal class File{
        //code inside it
   }
}

对于private es和class的成员(方法,属性,字段,嵌套类和嵌套struct s,所有可见性默认为最不可见 - enuminternal直接成员namespace,因为他们不能私有。

internal表示同一个程序集中的其他代码可以看到它,但没有别的(禁止朋友程序集和使用反射)。

这有两个原因:

  1. 无论如何,你应该有意识地使用尽可能少的可见性,以加强你的封装。
  2. 如果他们违约public,你可能会意外地公开一些私密或内部的东西。如果你不小心做了一些不够明显的东西,你会得到一个明显的编译错误并修复它。如果你不小心把某些东西看得太明显,你就会在你的代码中引入一个不会被标记为错误的缺陷,这将是一个重大变化,以便以后修复。
  3. 通常认为使用访问修饰符明确更好的风格,在代码中更清晰,正是发生了什么。

答案 2 :(得分:1)

默认情况下,所有class es(以及相关的所有类型)都是internal,所以为了让它们可以从外部访问(没有像InternalsVisibleToAttribute这样的东西)你必须明确地public。{/ p>