命名空间之外的私有类
本文关键字:命名空间 | 更新日期: 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