代碼片段:
public class TestA {
public class B1 { public decimal C { get; set; } ... }
public class B2 { public decimal C { get; set; } ... }
}
實例化 TestA a = new TestA(); 後,輸入 a. 智慧提示未顯示 B1、B2。
B1、B2 是 巢狀型別,而非 TestA 的實例欄位/屬性。巢狀類別屬於外部類別的型別命名空間,必須透過 TestA.B1 存取,而非實例 a。
// 1. 建立巢狀類別實例(不需外部實例)
TestA.B1 b1 = new TestA.B1();
b1.C = 1.23m;
// 2. 若需與外部實例關聯,請在 TestA 定義欄位
public class TestA {
public B1 Group1 = new B1(); // 實例欄位
public B2 Group2 = new B2();
public class B1 { public decimal C { get; set; } ... }
public class B2 { public decimal C { get; set; } ... }
}
// 現在 a.Group1.C 可在智慧提示中出現
inner 或在 Java 中為非 static 內部類別)。class Child : Parent,子類別實例即父類別實例,屬於「是一種」關係。若只是為了參數分組傳遞,直接在 TestA 定義 public B1 Group1 { get; set; } 等屬性即可,無需巢狀類別;若巢狀類別需存取外部私有成員,再考慮非 static 內部類別(Java)或傳遞外部實例參考(C#)。