Ale*_*dro 1 c# dictionary list list-initialization visual-studio-2017
我需要知道如何访问和初始化一系列包含其他字典的字典。例如,如果我有
class Conv{
Dictionary<int, Dictionary<int, Dictionary<int, List<double>>>> valori;
}
Run Code Online (Sandbox Code Playgroud)
我想用随机数启动参数“valori”,我该怎么做?我会这样做
valori[n1].Values[n2].Values[n3]
Run Code Online (Sandbox Code Playgroud)
但是在第一个“Value”之后,MVS 给了我一个错误。也许我必须先分配内存?我学了一点 c++,但我对 c# 仍然很陌生,如果我忘记了问题中的重要内容,请告诉我
在使用它们之前,您需要为每个键创建子字典
var list = new List<double> {d};
var d1 = new Dictionary<int, List<double>> {{n3, list }};
var d2 = new Dictionary<int, Dictionary<int, List<double>>> {{n2, d1}};
valori[n1] = d2;
Run Code Online (Sandbox Code Playgroud)
您也可以将这段简短的内容写在一行中:
valori[n1] = new Dictionary<int, Dictionary<int, List<double>>> {{n2, new Dictionary<int, List<double>> {{n3, new List<double> {d}}}}};
Run Code Online (Sandbox Code Playgroud)
当所有字典实际创建后,您可以正常访问它们:
var savedList = valori[n1][n2][n3];
Run Code Online (Sandbox Code Playgroud)
由于这种语法非常笨重并且很容易犯错误(如果存在子词典就会丢失,覆盖数据等),我强烈建议更改数据结构或至少将其隐藏在专用类中