首页 > 解决方案 > 如何通过表示[i,j]的单个变量访问多维数组的元素?

问题描述

我有一个 4x4 数组。我想给特定元素一些昵称(变量),但我没有找到直观的解决方案。

问题:如何通过单个元素访问特定元素?为了将来的可读性,我打算为每个元​​素使用别名。让未来的维护者知道每个元素的含义。

int[] arr = new int[ 4,4 ];

//This code won't compile
var YtoZ = "1,2";
int value = arr[ YtoZ ]; // equivalent to arr[1,2];

我检查了MSDN,但它的示例是通过硬编码值访问的。

我尝试了以下关键字:

最相关的帖子是使用元组来保存它: 如何保存多维数组索引?

其他结果大多是如何声明的:

我的解决方法可能是用重载的枚举值包装一个数组,但我觉得想太多了。

    public class wrapper
    {
        public enum NickName
        {
            X2x = 0,
            X2y = 10,
            Z2x = 2020,
            X2z = 2000,
        }
        // Provide [] operator access
        public object this[ NickName index ]
        {
            get
            {
                int i = (int)index % 100;
                int j = (int)index / 100;
                return m_Matrix[ i, j ];
            }
        }

        float[,] m_Matrix = new float[ 4, 4 ];
    }

标签: c#multidimensional-array

解决方案


推荐阅读