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");
}
}
}
下面是使用帶有輸出的巢狀類的程式碼影象。
很明顯,巢狀類使我們的程式碼易於閱讀。我們可以將所有這些相互使用的類放在一起。