以字符串为索引点的三维数组
本文关键字:三维 数组 索引 字符串 | 更新日期: 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的距离。