C#访问修饰符,用于仅在命名空间内公开类

时间:2013-08-27 14:16:09

标签: c# .net namespaces

在java中,您具有包级别保护,可确保类仅在包中可用。

C#中的命名空间或多或少像包一样。但是C#没有保护级别来保护命名空间中的类。

这是否有特定原因?

3 个答案:

答案 0 :(得分:18)

没有这样的访问修饰符:最接近的修饰符是internal,但保护单位是类所在的程序集,而不是其名称空间。

有人可能会说使用internal可以实现类似的控制级别,因为这两种限制都会阻止外人访问您库的实现细节。唯一能与之产生影响的人是你,图书馆的作者,你完全可以控制暴露的内容和隐藏的内容。从本质上讲,它意味着如果您不想在其命名空间之外使用类,只需避免使用它;如果该类为internal,则其他任何人都无法使用该类。

答案 1 :(得分:2)

在.NET中有一些组件(dll或exe文件),你可以使用internal修饰符来限制只在同一个程序集中的访问

答案 2 :(得分:1)

  

这是否有特定原因?

大多数情况下,这是因为有一些关键differences between packages and namespaces

简化链接问题和此处已经说过的内容:C#中的命名空间主要是帮助组织内部和外部的程序集内容。 Java包与C#程序集有更多共同之处,C#中有一个限制为程序集级别的访问修饰符:internal