0

我在 C# 中有 ClassLibrary 项目,并且我的所有“私有类”(在不同的命名空间下)都可以在同一个程序集(项目)内相互访问。

Class1.cs
----------------------------
namespace MyClass1App
{
   private class Class1{}
}


Class2.cs
----------------------------
namespace MyClass2App
{
   private class Class2{}
}

现在 Class1() 可以访问和创建 Class2() 类的实例 [如... new MyClass2App.Class2() ]。是的,这些类(Class1() 和 Class2())在程序集之外是不可访问的。当这些类被设为“内部”时,它的行为相同。有人可以帮助我了解“私有”和“内部”访问说明符在类级别上的实际使用/区别吗?

谢谢!

4

3 回答 3

3

您不应该能够private在命名空间级别声明一个类。如果私有类嵌入到另一个类中,则只能拥有它。

如果我尝试这样做,我会得到一个错误:

namespace MyApp
{
    private class Class1
    {
    }
}

这是错误消息:

命名空间中定义的元素不能显式声明为私有、受保护或受保护的内部

于 2010-12-30T07:28:40.787 回答
3

替代文字

对于普通类,您只能应用publicinternal其他访问修饰符没有意义。

嵌套类可以具有所有访问修饰符类型。

于 2010-12-30T07:31:30.757 回答
1

访问修饰符(C# 编程指南)

可以使用五种访问类型之一声明类或结构成员。它们可以是公共的或内部的,就像类和结构本身一样。可以使用 protected 关键字将类成员声明为受保护,这意味着只有使用该类作为基类的派生类型才能访问该成员。通过组合 protected 和 internal 关键字,可以将类成员标记为受保护的内部 - 只有派生类型或同一程序集中的类型才能访问该成员。最后,可以使用 private 关键字将类或结构成员声明为私有,表示只有声明该成员的类或结构才允许访问该成员。

重复的问题: 内部与私有访问修饰符

于 2010-12-30T07:25:37.833 回答