none
請教關於類的數組屬性的問題 RRS feed

  • 問題

  • 類A中寫了一個數組屬性,其它正常,但是它就是不執行set,請教各位老師是何原因? 代碼如下:

            static bool[] _busy = { false, false, false, false, false };
            public static bool[] Busy
            {
                get
                {
                    return _busy;
                }
                set
                {
                    // 取工位 Busy 狀態上升沿以清除該工位繪圖狀態
                    int iIndex=5;
                    
                    for(int i=0;i<5;i++)
                    {
                        if (value[i] && !_busy[i]) iIndex = i;
                    }
    
                    if (iIndex < 5) mGraph[iIndex].Clear();
    
                    _busy = value;
                }
            }

    在類B中調用:

    A.Busy[0]=true;

    此時,在類A的Busy屬性 set中設置斷點,不會執行,奇怪的是此時實際上單步跟蹤時執行的是 get , 而且 A.Busy[0]確實為 true了,這是什麼個情況呢,麻煩老師講解下,謝謝


    marki


    • 已編輯 markihuo 2014年8月29日 上午 11:43
    2014年8月29日 上午 10:44

解答

  • 因為你並沒有 Set Busy屬性啊, 

    A.Busy[0]=true 的執行順序是

    (1)先 A.Busy 表示 get A 的 Busy 屬性

    (2)Busy[0], 取得 Busy 屬性所指向陣列 Index  為 0 的元素

    (3)Busy[0]=true , 把陣列中 Index 為0 的元素設定為 true

    我們把它做細部拆解

    bool[] x= A.Busy;

    x[0]=true ;

    所以你從頭到尾都沒有呼叫 Set 啊

    如果你要 Set Busy 屬性必須是 A.Busy = 某個 bool 陣列


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2014年8月29日 下午 12:23
    版主

所有回覆

  • 因為你並沒有 Set Busy屬性啊, 

    A.Busy[0]=true 的執行順序是

    (1)先 A.Busy 表示 get A 的 Busy 屬性

    (2)Busy[0], 取得 Busy 屬性所指向陣列 Index  為 0 的元素

    (3)Busy[0]=true , 把陣列中 Index 為0 的元素設定為 true

    我們把它做細部拆解

    bool[] x= A.Busy;

    x[0]=true ;

    所以你從頭到尾都沒有呼叫 Set 啊

    如果你要 Set Busy 屬性必須是 A.Busy = 某個 bool 陣列


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2014年8月29日 下午 12:23
    版主
  • 基礎啊基礎,講解太好了,謝謝老師

    marki

    2014年8月29日 下午 12:40