有什么区别:
namespace Library{
class File{
//code inside it
}
}
和
namespace Library{
public class File{
//code inside it
}
}
那么公共类和类之间的区别是什么?
答案 0 :(得分:58)
如果没有指定public
,则该类隐式internal
。这意味着该类仅在同一个程序集中可见。指定public
时,该类在程序集外部可见。
还允许明确指定internal
修饰符:
internal class Foo {}
答案 1 :(得分:21)
前者相当于:
namespace Library{
internal class File{
//code inside it
}
}
对于private
es和class
的成员(方法,属性,字段,嵌套类和嵌套struct
s,所有可见性默认为最不可见 - enum
和internal
直接成员namespace
,因为他们不能私有。
internal
表示同一个程序集中的其他代码可以看到它,但没有别的(禁止朋友程序集和使用反射)。
这有两个原因:
public
,你可能会意外地公开一些私密或内部的东西。如果你不小心做了一些不够明显的东西,你会得到一个明显的编译错误并修复它。如果你不小心把某些东西看得太明显,你就会在你的代码中引入一个不会被标记为错误的缺陷,这将是一个重大变化,以便以后修复。通常认为使用访问修饰符明确更好的风格,在代码中更清晰,正是发生了什么。
答案 2 :(得分:1)
默认情况下,所有class
es(以及相关的所有类型)都是internal
,所以为了让它们可以从外部访问(没有像InternalsVisibleToAttribute
这样的东西)你必须明确地public
。{/ p>