Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA游戏项目拖放&x2014;如何实现对象交换?_C#_Swap - Fatal编程技术网

C# XNA游戏项目拖放&x2014;如何实现对象交换?

C# XNA游戏项目拖放&x2014;如何实现对象交换?,c#,swap,C#,Swap,我正在制作一个库存系统,我被困在一个地方,在这个地方,物品应该通过简单的拖放从一个单元格移动到另一个单元格 有一个Item[,]Inventory数组,它保存项目,object fromCell,toCell,当释放鼠标按钮时,它应该保存对要操作的单元格的引用,但是当我尝试这样做时: object temp = toCell; toCell = fromCell; fromCell = temp; …游戏只是交换对象引用,而不是实际对象。我该怎么做 UPD:多亏了巴托斯,我才明白这一点。事实证

我正在制作一个库存系统,我被困在一个地方,在这个地方,物品应该通过简单的拖放从一个单元格移动到另一个单元格

有一个
Item[,]Inventory
数组,它保存项目,
object fromCell,toCell
,当释放鼠标按钮时,它应该保存对要操作的单元格的引用,但是当我尝试这样做时:

object temp = toCell;
toCell = fromCell;
fromCell = temp;
…游戏只是交换对象引用,而不是实际对象。我该怎么做

UPD:多亏了巴托斯,我才明白这一点。事实证明,您可以安全地使用对象数组的引用,并使用保存的要交换的对象索引对其进行更改

代码可以是这样的:

object fromArray, toArray;
int fromX, fromY, toX, toY;

// this is where game things happen

void SwapMethod()
{
    object temp = ((object[,])toArray)[toX, toY];
    ((object[,])toArray)[toX, toY] = ((object[,])fromArray)[fromX, fromY];
    ((object[,])fromArray)[fromX, fromY] = temp;
}

为什么不使用
清单
数组的索引:
int fromCell,toCell

var temp = Inventory[toCell];
Inventory[toCell] = fromCell;
Inventory[fromCell] = temp;

您正在将资源清册建模为二维插槽数组,因此使用索引访问它似乎相当安全。

为什么不使用
资源清册
数组的索引:
int fromCell,toCell

var temp = Inventory[toCell];
Inventory[toCell] = fromCell;
Inventory[fromCell] = temp;
您正在将库存建模为二维插槽阵列,因此使用索引访问库存似乎相当安全。

这如何

internal static void Swap<T>(ref T one, ref T two)
{
    T temp = two;
    two = one;
    one = temp;
}
此外,还可以为阵列添加扩展(如果更方便的话)

这个怎么样

internal static void Swap<T>(ref T one, ref T two)
{
    T temp = two;
    two = one;
    one = temp;
}
此外,还可以为阵列添加扩展(如果更方便的话)


问题是,你能传递对通过索引器方法获得的对象的引用吗?我的错,当然对数组是可能的,但对自定义索引器(
this[index]
)是不可能的。第一个方法根本不起作用,因为我没有在一个方法中从和
单元格获取
,而对于一次使用来说,秒似乎有点过头了。但无论如何还是要谢谢你。问题是,你能传递对一个通过索引器方法获得的对象的引用吗?我的错,当然对数组是可能的,但对自定义索引器(
this[index]
)是不可能的。第一个根本不起作用,因为我没有在一个方法中从
单元格,而对于一次使用来说,秒似乎有点过头了。不过还是谢谢你。
Inventory.Swap(fromCell, toCell);