亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么當我在監視視圖中監視基類對象時,VS2017 會顯示派生類的成員值?

為什么當我在監視視圖中監視基類對象時,VS2017 會顯示派生類的成員值?

C#
慕斯709654 2023-08-27 10:16:33
我有 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等。

這不是一個錯誤 - 這是一個功能。


查看完整回答
反對 回復 2023-08-27
  • 1 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號