簡體   English   中英

從其他類 C# 訪問/使用嵌套類

[英]Accessing/Using nested classes from other classes C#

我的命名空間中的文件夾中有一個類:

using System;  

namespace mynamespace.myFolder1
{
   public class F1  
   {  
      // class properties...  
      // class methods...  

      public class F1_Nest  
      {  
          // class properties...  
          // class methods...  
      }  
}

現在我必須從以下位置訪問F1_Nest類:

using System;  
using mynamespace.myFolder1;   

namespace mynamespace.myFolder2  
{  
   public class F2  
   {  
      // class properties...  
      // class methods...  

      // I have to access nested class F1_Nest here...  
   }  
}

我將如何在F2類中使用/訪問F1_Nest類?

嵌套類是就像一個正常的類,除了它的定義駐留包含類 結果是包含類幾乎就像嵌套類的命名空間。 您不必為了使用嵌套類而實例化包含類。 例如:

namespace MyNamespace
{
    public class MyParentClass
    {
        public class MyNestedClass
        {

        }
    }
}

現在你可以像這樣在其他地方實例化它:

MyNamespace.MyParentClass.MyNestedClass x = 
    new MyNamespace.MyParentClass.MyNestedClass();

與命名空間一樣,這樣做的目的是為了組織。 是否使用嵌套類而不是平面類結構取決於您作為設計者,但是當您有一個類的含義、定義或用法與另一個類密不可分並且沒有該課程之外的任何相關性或意義。

例如,假設您有一個Widget類,它的ID屬性不僅僅是一個簡單的intGuid ……您可能有一個WidgetID枚舉,例如它可以作為嵌套類駐留在Widget

要訪問嵌套類,您需要執行以下操作:

using System;  
using mynamespace.myFolder1;   

namespace mynamespace.myFolder2  
{  
    public class F2  
    {  
        // class properties...  
        // class methods...  

        void SomeMethod()
        {
            // no need to instantiate an object of F1 class
            var f1Nest = new F1.F1_Nest();
        }  
    }  
}

嵌套類F1_Nest可以在類F2訪問為:

using System;  
using mynamespace.myFolder1;   

namespace mynamespace.myFolder2  
{  
   public class F2  
   {  
      // class properties...  
      // class methods...  

      // I have to access nested class F1_Nest here...  
      void F2_Method()  
      {
         F1.F1_Nest();  
      }
   }  
}

聲明F1_Nest的對象如下

F1.F1_Nest  objYourObjectVariableName=new F1.F1_Nest();

暫無
暫無

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

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