我想在命名空间之外创建一个类,以使其默认访问修饰符为“PRIVATE”。我这样做:
namespace KnowStructs
{
class Clas1 {}
}
class MyClass {}
但是当我查看Reflector时,我的班级'MyClass'仍被称为内部。 任何人都可以帮助我。
答案 0 :(得分:2)
顶级类型(不嵌套在其他类型中)只能具有内部或公共可访问性。这些类型的默认可访问性是内部的。
和
命名空间不允许使用访问修饰符。命名空间没有访问限制。
和private:
私有成员只能在类的主体或声明它们的结构中访问
也就是说,private关键字是根据包含的类或结构明确定义的。
所以无论你想做什么,我都不明白。顶级私有类型怎么可能有用呢?没有其他代码可以引用它(无论如何,即使它有例如静态工厂方法)。
答案 1 :(得分:1)
如果允许的私有类不是嵌套类型,那意味着什么?如果它比internal
更具限制性,那么您将如何使用它或创建实例。任何用例都要求它至少为internal
。我想看看你打算如何使用它。
这根本没有道理意义。
将私有嵌套类的范围限定为包含父类的父类。如果它是internal
,那么你仍然可以在程序集中创建一个实例。
因此对于没有修饰符的类,对于非嵌套类型,默认为internal
,对于嵌套类型,{。1}},因为.Net在未指定修饰符时始终应用最严格的访问。
答案 2 :(得分:0)
如果您只想通过命名空间中的类访问,则可以创建类internal