C# 中的巢狀類

Luqman Khan 2024年2月15日
  1. C# 中的巢狀類
  2. 在 C# 中使用巢狀類的原因
  3. 在 C# 中實現巢狀類
C# 中的巢狀類

本教程將介紹 C# 程式語言中的巢狀類。

類是使用者定義並用於構建事物的藍圖或模式。它是結合了方法和欄位(定義動作的成員函式)的單個例項。

C# 中的巢狀類

在 C# 中,使用者可以在另一個類中定義一個類,稱為巢狀類。它的主要目的是限制巢狀類的範圍。

與常規類相比,巢狀類提供了私有修飾符和保護的額外可能性。如果你只需要從父類上下文中呼叫此類,則將其定義為巢狀類通常是一個好主意。

假設這個類將在庫之外使用。使用者通常更容易將其定義為單獨的同級類,無論這兩個類是否具有任何概念關係。

即使在公共父類中構建一個公共類巢狀在技術上是可行的,但這也不是一個好主意。

在 C# 中使用巢狀類的原因

使用巢狀類有幾個強有力的理由。

  • 這是一種只使用一次的分組類的實用技術。
  • 改進了封裝。
  • 巢狀類可以使程式碼更易於閱讀和維護。
  • 它有助於邏輯類分組。

如果一個類僅對另一個類有價值,則將其包含在該類中以將兩者保持在一起是有意義的。通過巢狀這樣的輔助類可以更加簡化。

除了公共和內部訪問修飾符,巢狀類還可以包含私有和受保護的內部訪問修飾符。

在某些情況下,實現從類中返回的介面是有益的。儘管如此,該介面的實現應該對外界完全隱藏。

例如,在將 yield 引入 C# 之前,我們將列舉器實現嵌入到集合中作為私有類來構建它們。集合成員將具有簡單的訪問許可權,但外部世界不需要或看到如何完成此操作的複雜性。

在 C# 中實現巢狀類

下面是說明巢狀類概念的程式碼。

Program 類是程式的主類,它有一個公共的靜態主方法。我們將外部類 Outside_classs 建立為公共類,並將另一個名為 Inside_class 的內部類建立為公共類。

此外,我們建立了兩個方法:在 Outside_class 內部和另一個在 Inside_class 內部。我們無法從 Outside_class 物件訪問 Inside_class 方法。

要訪問其中的方法,我們需要建立一個 Inside_class 的例項。

using System;

public class Program {
  public static void Main(string[] args) {
    // create instance of outside class
    Outside_class outinstance = new Outside_class();
    outinstance.outerclassmethod();
    // you can't access inside class methods from outside class objects
    // create instance of inside class
    Outside_class.Inside_class insideinstance = new Outside_class.Inside_class();
    // accessing the method of inside class.
    insideinstance.insideclassmethod();
    Console.Read();
  }
}
public class Outside_class {
  // Method of outside class
  public void outerclassmethod() {
    Console.WriteLine("here is Outside class method");
  }
  // Inner class
  public class Inside_class {
    // Method of inside class
    public void insideclassmethod() {
      Console.WriteLine("here is Inside class Method");
    }
  }
}

下面是使用帶有輸出的巢狀類的程式碼影象。

巢狀類的程式碼

很明顯,巢狀類使我們的程式碼易於閱讀。我們可以將所有這些相互使用的類放在一起。

相關文章 - Csharp Class