Ksh*_*jee 1 c# dictionary list data-structures
题
我在C#中需要一个像上面这样的数据结构但是我在访问内容时遇到了问题,我看到我可以用C++做到这一点在c#中是如何完成的?
List<Dictionary<string, List<int>>> data =
new List<Dictionary<string, List<int>>>(5);
Run Code Online (Sandbox Code Playgroud)
当我做数据[0]我得到一个错误说明索引越界..
任何人都可以指出我如何做到这一点.或者我做错了什么?
附录:
- > 我想做什么
我基本上创建了一个数据结构,保留了一个月的计划.因此,每个5周的列表包含 - >活动词典,其中每个活动的值是 - > 7个整数的列表,表示每周每天花在该活动上的小时数.
我有我需要添加空白条目.附加问题是这样的.
- > 查询
现在我将不得不在列表中添加5个空白词典.以及表示每天消耗时间的字典的每个键中的7个整数(初始化为零)的列表.
有没有办法初始化列表中的5个空白词典,并且内部相同,而无需手动创建新词典并添加它们.使用c ++我相信你可以做到这一点甚至输入你想要初始化每个条目的值,所以..
像这样的陈述
Vector<int> *vec = new Vector<int>(5,0);
Run Code Online (Sandbox Code Playgroud)
初始化vec有5个条目,每个条目为0.我可以在c#中执行相同的操作吗?
谢谢您的帮助.
Jon*_*eet 11
这与列表是复杂类型无关.你会得到同样的东西:
List<string> list = new List<string>(5);
string x = list[0]; // This will fail too
Run Code Online (Sandbox Code Playgroud)
该List<T>(int)
构造函数使用给定一个列表容量(即阵列支持,将有5初始大小,假设它并不能决定这只是太小,是有用的).它的大小仍为0.
您仍然需要先将元素添加到列表中,然后才能访问它们.
编辑:没有构造函数来"填充"具有给定值集的列表.使用LINQ,你可以写:
List<string> list = Enumerable.Repeat("foo", 5).ToList();
Run Code Online (Sandbox Code Playgroud)
...但你不会想这样做对你的字典之一,否则你会用5个引用相同的词典结束.你可以使用:
var list = Enumerable.Range(0, 5)
.Select(x => new Dictionary<string, List<int>>())
.ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,这里的每个字典都是空的.
就个人而言,我可能只是创建列表并填充for循环虽然...
归档时间: |
|
查看次数: |
1658 次 |
最近记录: |