如何在C#中定义"匿名命名空间"?

Ear*_*ine 5 c# namespaces

在C++中,为了定义一个只能在同一个文件中访问的符号,我们说

namespace 
{
    class my_private_class
    { ... }
}
Run Code Online (Sandbox Code Playgroud)

但我可以在C#中做同样的事情吗?或者我必须说

namespace __DO_NOT_USE_OUT_OF_.xxx.cs__ 
{       
  public MyPrivateClass 
  { ... }
}

using __DO_NOT_USE_OUT_OF_.xxx.cs__;
Run Code Online (Sandbox Code Playgroud)

(假设这是在一个名为xxx.cs的文件中)?原因的后者将取决于其他程序员是否尊重.

she*_*nku 1

C# 中没有这样的东西,我们有一种称为访问修饰符的东西来管理类型的可见性。

该用法是针对类或方法的,例如:

internal class MyType 
{

}
Run Code Online (Sandbox Code Playgroud)

或者

protected void MyMethod() 
{

}
Run Code Online (Sandbox Code Playgroud)

您必须选择适用于您的场景的一种,以下是详细信息:

民众

同一程序集中或引用它的另一个程序集中的任何其他代码都可以访问该类型或成员。

私人的

类型或成员只能由同一类或结构中的代码访问。

受保护的

类型或成员只能由同一类或结构中的代码或从该类派生的类中访问。

内部的

类型或成员可以由同一程序集中的任何代码访问,但不能从另一个程序集中访问。

受保护的内部

类型或成员可以由声明它的程序集中的任何代码访问,也可以从另一个程序集中的派生类内部访问。来自另一个程序集的访问必须在派生自声明受保护内部元素的类的类声明内进行,并且必须通过派生类类型的实例进行。