在2D数组中交换元素C#

我正在使用C#,我对这门语言很新,但之前我使用过类似的语言,所以我理解基本的语法。

我有一个Object类型的2D数组。 ( X代表什么值, Y代表什么记录)它在第0列和第1列中存储两个字符串,在2中存储MessageBoxButtons在3中存储MessageBoxButtons

我想能够交换两个记录。

每次对数组进行更改时,我都会使用第1列填充listBox。 (使用循环)我很满意这个系统。 我已经在listBox的一侧放置了+和 – 按钮,但我无法弄清楚如何在它后面执行代码。

我想要它,以便当我点击+按钮时,它会将当前选定的记录碰到一条记录。 (IE它减少了它的Y位置并增加了它上面的记录的Y坐标)它需要碰撞与该记录相关的所有值。

有人可以为我提供这样做的function吗?

我希望我能够解释得这么好。

这将需要以旧方式完成,以交换两个变量的值:

 var t = a; a = b; b = t; 

但是,如果a和b是2d数组的行,则必须一次完成一个元素。

 public void Swap2DRows(Array a, int indexOne, int indexTwo) { if (a == null} { throw new ArgumentNullException("a"); } if (a.Rank != 2) { throw new InvalidOperationException("..."); } // Only support zero based: if (a.GetLowerBound(0) != 0) { throw new InvalidOperationException("..."); } if (a.GetLowerBound(1) != 0) { throw new InvalidOperationException("..."); } if (indexOne >= a.GetUpperBound(0)) { throw new InvalidOperationException("..."); } if (indexTwo >= a.GetUpperBound(0)) { throw new InvalidOperationException("..."); } for (int i = 0; i <= a.GetUpperBound(1); ++i) { var t = a[indexOne, i]; a[indexOne, i] = a[indexTwo, i]; a[indexTwo, i] = t; } } 

这可以推广到处理任意下界。