A2 = B2;
B2 = C;
这个操作实际只是交换了A2和B2所指向的对象,你需要交换对象中的内容

解决方案 »

  1.   

    是的,那我要如何交换内容呢?如下操作吗?
    A2.sum = B2.sum;
    B2.sum = C.sum;能像C++那样吗?
    类似指针操作
      

  2.   

    不可能
    你总共有两个实例
    开始时两个实例对应两个引用
    后来又添加两个引用
    相当于每个实例各对应两个引用
    但是指向同一个实例的两个引用之间并无联系--除了指向相同之外如果你可以交换A2和B2就能交换了A1和B1
    那你想想Test C = A2;
    A2 = B2;
    B2 = C;你这段代码还能交换A2和B2么
    不就死在这里了么注意一下面向对象中对象和实例和对象的引用之间的关系与区别
    也就是对象实际内容的存储与对象指针的存储之间的关系与区别
    你就能明白了
      

  3.   

    是的,确实还有别的逻辑我实现的运用是想实现两个ICON的拖放操作
      

  4.   

    GUISlot.cs
        
    /// <summary>
        ///   开始拖放操作
        /// </summary>
        private void StartDrag()
        {
            GUIManager.Instance.DragOperation = null;
            GUIManager.Instance.DragOperation = new DragDropOperation();
            GUIManager.Instance.DragOperation.BeginDrag(ref _icon);
        }    /// <summary>
        ///   结束播放操作
        /// </summary>
        private void EndDrag()
        {
            if (GUIManager.Instance.DragOperation != null)
                GUIManager.Instance.DragOperation.EndDrag(ref _icon);
        }
    DragDropOperation.cs
        
    public GUIIcon BeginDrag(ref GUIIcon sourceIcon)
        {
            _srcIcon = sourceIcon;        _tepIcon = new GUIIcon();
            _tepIcon._imageTexture  = sourceIcon._imageTexture;
            _tepIcon._rectSize      = sourceIcon._rectSize;
            _tepIcon._tileCol       = sourceIcon._tileCol;
            _tepIcon._tileRow       = sourceIcon._tileRow;
            _tepIcon._iconIndex     = sourceIcon._iconIndex;        IsDrag = true;        return _srcIcon;
        }    public GUIIcon EndDrag(ref GUIIcon destinationIcon)
        {
            _desIcon = destinationIcon;        CompleteDrag();        _tepIcon = null;        IsDrag = false;        return _desIcon;
        }    private void CompleteDrag()
        {
            if (IsDrag == false)
                return;        if (_srcIcon == null)
                return;        if (_desIcon == null)
                return;        Debug.Log("src =" + _srcIcon._iconIndex);
            Debug.Log("des =" + _desIcon._iconIndex);        GUIIcon tempIcon = _desIcon;        //_desIcon._iconIndex = _srcIcon._iconIndex;
            //_srcIcon._iconIndex = tempIcon._iconIndex;        _desIcon = _srcIcon;
            _srcIcon = tempIcon;        Debug.Log("srcComplete =" + _srcIcon._iconIndex);
            Debug.Log("desComplete =" + _desIcon._iconIndex);
        }