以字符串为索引点的三维数组

本文关键字:三维 数组 索引 字符串 | 更新日期: 2023-09-27 18:02:49

我在网上到处找,都没能找到一个可行的答案。

我需要创建一个变量,它是一个三维数组,但第一个参考点应该是string,第二个是double。

readings["alpha"][] = 17.42; readings["alpha"][] = 19.42; readings["beta"][] = 11.1;

请注意,我不能引用索引,因为我不知道会有多少索引!

然后我将对数组中的每个元素使用a来获取值,因此对alpha元素中的每个元素使用a将返回
17.42, 19.42

有没有人有任何想法,因为我很困惑,为什么我不能只是创建一个数组,并使用字符串作为索引,而不是int值

以字符串为索引点的三维数组

这是因为c#中的数组是实际的数组(连续内存中的平面列表),不像PHP中称为"数组"的多用途键值集合。因此,使用除从零开始的整数以外的任何整数作为索引都没有多大意义。

如果您想要一个支持字符串键的集合,请查看系统。Collections和system .Collections.通用命名空间。您可能需要Dictionary<String, double[][]>之类的东西

不是数组,但是为什么不这样做呢?

    internal Dictionary<string, List<double>> _readings = new Dictionary<string, List<double>>();
    public void Test ()
    {
        _readings.Add("alpha", new List<double>() { 17.42, 19.42 });
        // getting alpha values
        var alphaValues = from p in _readings where p.Key == "alpha" select p.Value;
        foreach (double d in alphaValues.First())
            Console.WriteLine(d);
    }

如果你想有一个函数来添加一个双精度(正如你在评论中所说)

    private void  AddRegarding(string key, double value)
    {
        if (_readings[key] == null)
            _readings[key] = new List<double>();
        _readings[key].Add(value);
    }

为什么不在引用列表的外部两个数据结构中使用哈希表呢?

如果你不需要访问第二层,一些语言甚至允许你使用(String, Double)对作为密钥。

编辑:既然很清楚这是c#,你应该看看字典的数据结构

你可以用

Dictionary<string, double[]>

或者为字符串索引

创建查找字典
Dictionary<string, int> lookup = new Dictionary<string, int> { {"alpha", 0}, {"beta", 1} };
double[][] readings;
// do some init obviously, then use it
readings[lookup["alpha"]][0] = 1;

您指的是关联数组,而不仅仅是简单数组。一个简单的数组只是一个接一个的内存块,对它们的访问是通过说它们离开始有多远,所以它们不能是"三"的距离,它们只能是3的距离。