【发布时间】:2010-09-01 03:16:03
【问题描述】:
在 C# 中,我有一个 MenuItem 数组。我正在尝试使用以下代码交换数组的索引 2 和索引 3 中的两个对象,但没有成功:
MenuItem Temp = Items[2];
Items[2] = Items[3];
Items[3] = Temp;
第二行和第三行不能在 C# 中运行肯定是有原因的,我可能还不明白。有人能再澄清一点吗?我是否必须深入并单独交换对象中的每个属性?
已编辑 - 抱歉。看起来我在尝试清理代码以进行发布时弄乱了代码。现已更正。
实际代码是:
MenuItem TempButton = MenuItems.Items[SelectedButton.CountId];
MenuItems.Items[SelectedButton.CountId] = MenuItems.Items[SelectedButton.CountId + 1];
MenuItems.Items[SelectedButton.CountId + 1] = TempButton;
MenuItems.Items 是MenuItem 的数组
查看我放在 MenuItems.Items 上的 Watch,第 2 行或第 3 行没有任何反应。
MenuItems.Items 属性具有 get 和 set 函数,这可能会导致问题...将进一步调查...
【问题讨论】:
-
您的代码没有意义。您似乎将
Temp和Items[2]分配给彼此,实际上没有交换任何内容。 -
您在第二行代码中引用
MenuItems.Items[],而在其他任何地方引用Items[]是否有原因?和第 2 行中的 SelectedButton.CountID,但其他任何地方的幻数? -
我想我确切地知道这里发生了什么。看我的回答。