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

本文关键字:命名空间 用于 访问 | 更新日期: 2023-09-27 18:29:22

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

C#中的命名空间的行为或多或少类似于包。但是C#没有保护命名空间中类的保护级别。

这有具体的原因吗?

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

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

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

在.NET中有assemlies(dll或exe文件),您可以使用internal修饰符来限制仅在同一程序集内的访问

这有具体的原因吗?

大多数情况下,这是因为包和名称空间之间存在一些关键差异

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