我有 3 個類 KlasseA、KlasseB 和 KlasseC 的類層次結構。ClassC繼承自ClassB。B類繼承自A類。這些類中的每一個都有各自的 int 類型屬性 A、B 和 C 以及字段 a、b 和 c:public class KlasseA{ private int a; public int A { get => a; set => a = value; }}public class KlasseB: KlasseA{ private int b; public int B { get => b; set => b = value; }}public class KlasseC: KlasseB{ private int c; public int C { get => c; set => c = value; }}(我省略了不必要的構造函數和檢查邏輯)現在我可以編寫以下代碼:class Program{ static void Main(string[] args) { KlasseA aKlasse; KlasseB bKlasse; KlasseC cKlasse; aKlasse = new KlasseC() { A = 4, B = 5, C = 6 }; bKlasse = aKlasse as KlasseB; cKlasse = aKlasse as KlasseC; }}當我將aKlasse,bKlasse和添加cKlasse到監視窗口時,所有 3 個都顯示 type 的值KlasseC,但類型分別顯示為"KlasseA (KlasseC)"和"KlasseB (KlasseC)"和"KlasseC"。展開所有 3 個監視變量后,我可以看到所有 3 個變量中的所有 3 個字段和屬性:-aKlasse {KlasseC} KlasseA {KlasseC} A 4 int B 5 int C 6 int a 4 int b 5 int c 6 int-bKlasse {KlasseC} KlasseB {KlasseC} A 4 int B 5 int C 6 int a 4 int b 5 int c 6 int-cKlasse {KlasseC} KlasseC A 4 int B 5 int C 6 int a 4 int b 5 int c 6 int我認為這是不正確的,因為在代碼中我永遠無法編寫aKlasse.C = aKlasse.A;即使監視窗口指示 aKlasse 具有屬性 AB 和 C。有人可以證實或反駁我的假設嗎?
1 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
它向您顯示執行時間數據 - 這比僅向您顯示基于編譯時已知的內容要有用得多?;旧希蚰@示“變量引用的對象” - 并且代碼中的該對象是 a KlasseC
,無論變量的類型如何。
例如,如果您有一個類型為 的變量Stream
,但它實際上是在執行時對 a 的引用MemoryStream
,您希望能夠輕松查看列表,而無需使用監視窗口來調用Read
等。
這不是一個錯誤 - 這是一個功能。
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報
0/150
提交
取消