【问题标题】:C# 2D array indexes exchange [duplicate]C# 2D 数组索引交换 [重复]
【发布时间】:2017-10-27 11:58:32
【问题描述】:

我有二维数组。

例如:

        int[,] Map = new int[5, 5]
        { 
        {1,1,1,1,1},
        {1,2,0,0,1},
        {1,0,0,0,1},
        {1,0,0,0,1},
        {1,1,1,1,1}
        };

而且我需要一些 2 号的 KeyEvent 更改索引(索引 - [1,1])。

例如:

        1,1,1,1,1
        1,0,2,0,1
        1,0,0,0,1
        1,0,0,0,1
        1,1,1,1,1

知道怎么做吗?

【问题讨论】:

  • 您想交换两个数组项。你尝试了什么?这是一个非常容易的问题。你应该能够自己弄清楚。
  • 您到底有什么问题?你试过什么?
  • 另外,简单的搜索会产生多种解决方案

标签: c# arrays multidimensional-array 2d keyevent


【解决方案1】:

有一篇以文章形式提供的优秀文档here

它对处理多维数组的整个过程进行了深入的解释,包括以下用于管理数组的代码:

// Initialization
int[,] array = new int[4, 2];
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

// Modification
array2D[1, 1] = 8;

// Access
Console.WriteLine(array2D[2,1]);


在上面的修改示例中,它将第二个(使用从零开始的索引)项目的第二个整数更改为 8 的值。

在上面的访问示例中,它将显示第三项的第二个整数,返回 6。



为了直接回答您的问题,“交换”变量的概念涉及三个步骤:

  1. 使用访问器为第一个值设置临时变量的值
  2. 使用 setter 和 accessor 将第一个值设置为第二个值
  3. 使用 setter 将第二个值设置为临时变量的值


这个工作的一个例子是:

int a = 5;
int b = 6;
int temp;
temp = a; // Step 1
a = b; // Step 2
b = temp; // Step 3    

根据您给出的示例,您似乎将第二个数组中的第三项设置为第二个数组中的第二项。可以使用以下方法完成此过程:

int temp;
temp = map[1, 2];
map[1, 2] = map[1, 1];
map[1, 1] = temp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2020-12-31
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多