在我的例子中,我有8个物体。
假设BlueList的第一个元素是指Element1,RedList1的第一个元素也是指Element1
现在我想将Object1与Object3交换,但是当我做这样的事情时:
伪代码:
Object Temp = BlueList1[0];
BlueList1[0] = BlueList[1];
BlueList1[1] = Temp;
结果是:
因为我只切换了列表参考。 如何安全交换对象的两个地址,如下图所示?如您所见,Element1与Element3切换。
可以在C ++中轻松完成。它在C#中是否可行?
答案 0 :(得分:2)
我认为你需要制作一个包装类。
class Element<T> {
public T Object { get; set; }
public void SwapWith(Element<T> other) {
// warning: this is not thread-safe
T tmp = other.Object;
other.Object = this.Object;
this.Object = tmp;
}
}
然后你可以进行改变,如
BlueList1[0].SwapWith(BlueList[1]);
答案 1 :(得分:0)
我想您还需要更改RedList1和RedList2
中的引用RedList1[0] = Element3;
RedList2[0] = ELement1;
答案 2 :(得分:-1)
因为您更改的值不是引用,因为列表是引用 类型,所以你需要更改引用,所以创建一个方法,如 循环并调用该方法并传递您的值。
void swap(int ref a , int ref b)
{
int temp =a;
a=b;
b =temp;
}
希望它对您有所帮助