命名空间之外的私有类

本文关键字:命名空间 | 更新日期: 2023-09-27 17:55:07

我想在命名空间之外创建一个类,使其默认访问修饰符为'PRIVATE'。我是这样做的:

namespace KnowStructs
{
    class Clas1 {}
}
class MyClass {}

但是当我在Reflector中查看时,我的类'MyClass'仍然被称为内部。谁能帮我一下?

命名空间之外的私有类

From Accessibility Levels:

顶层类型没有嵌套在其他类型中,只能具有内部或公共可访问性。这些类型的默认可访问性是内部的。

:

命名空间不允许使用访问修饰符。命名空间没有访问限制。

和private:

私有成员只能在声明它们的类体或结构体中访问

也就是说,private关键字是根据包含类或结构显式定义的。

所以不管你想做什么,我都不明白。顶级私有类型怎么可能有用呢?没有其他代码能够引用它(以任何方式,即使它有静态工厂方法)。

如果允许使用非嵌套类型的私有类,那么这意味着什么?如果它比internal更具限制性,那么您将如何使用它或创建实例。任何用例都要求它至少是internal。我想看看你打算如何使用它。

这根本没有逻辑意义。

而私有嵌套类将自身作用于包含它的父类。如果它是internal,那么你仍然可以在程序集中创建一个实例。

对于没有修饰符的类,对于非嵌套类型默认为internal,对于嵌套类型默认为private,因为. net总是在没有指定修饰符时应用最严格的访问。

如果您只希望名称空间中的类可以访问,则可以将类设置为internal