簡體   English   中英

如何在C#中定義“匿名名稱空間”?

[英]How to define “anonymous namespace” in C#?

在C ++中,為了定義只能在同一文件中訪問的符號,我們說

namespace 
{
    class my_private_class
    { ... }
}

但是我可以在C#中做同樣的事情嗎? 還是我不得不說

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

using __DO_NOT_USE_OUT_OF_.xxx.cs__;

(假設這在名為xxx.cs的文件中)? 后面的原因,將取決於其他程序員是否考慮。

C#中沒有匿名名稱空間 ,但是您可以利用靜態類

namespace MyNamespace // <- Just a namespace
{
    // Anonymous Namespace emulation:
    //   static class can't have instances and can't be inherited, 
    //   it's abstract and sealed
    internal static class InternalClass // or public static class
    {
        // private class, it's visible within InternalClass only  
        class my_private_class 
        { ... }
    }
}

C#中沒有這樣的東西,我們有一個稱為訪問修飾符的東西,用於管理類型的可見性。

用法針對類或方法,例如:

internal class MyType 
{

}

要么

protected void MyMethod() 
{

}

您將必須選擇一種適用於您的方案的信息,以下是詳細信息:

上市

該類型或成員可以由同一程序集或引用該程序集的另一個程序集中的任何其他代碼訪問。

私人的

類型或成員只能由相同類或結構中的代碼訪問。

受保護的

類型或成員只能由相同類或結構中的代碼或從該類派生的類中的代碼訪問。

內部

可以通過同一程序集中的任何代碼訪問類型或成員,但不能從另一個程序集中訪問該類型或成員。

受保護的內部

可以通過聲明了該類型或成員的程序集中的任何代碼或從另一個程序集中的派生類中訪問該類型或成員。 來自另一個程序集的訪問必須在從聲明受保護內部元素的類派生的類聲明中進行,並且必須通過派生類類型的實例進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM