尝试执行此多维列表插入时我缺少什么?
我正在尝试创建一个可以通过以下方式访问和设置的多维列表:
myObjectVar[1,2,3] = new MyObject();
我已按以下方式重载了 [,,]
,但插入从未运行。检查索引是否存在的正确方法是什么,因为下面的代码似乎不起作用。
public myObject this[int x, int y, int z] {
get {
return _myObject[x][y][z];
}
set {
if(_myObject.Count < x){
_myObject.Insert(x, new List<List<myObject>>());
}
if(_myObject[x].Count < y){
_myObject[x].Insert(y, new List<myObject>());
}
if(_myObject[x][y].Count < z){
_myObject[x][y][z].Insert(z, value);
}
else{
_myObject[x][y][z] = value;
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我假设您想要创建类似多维数组的东西,您不必指定边界,并且在设置元素时会扩展。
在这种情况下,您的代码的问题在于您使用了
Insert()
。该方法可用于在现有列表的中间插入项目,但不能超出。因此,如果列表为空,则无法在位置2
处插入内容。如果您想执行此操作,则必须通过在循环中调用
Add()
来手动扩展列表。但是,如果您期望非常稀疏的结构(即,大多数元素未设置),您可能应该使用类似
Dictionary>>
的内容。I am assuming you want to create something like a multidimensional array where you don't have to specify bounds and that is expanded as you set the elements.
In that case, what is wrong with your code is that you use
Insert()
. That method can be used to insert items in the middle of an existing list, but not beyond. So, if you have empty list, you can't insert something at the position2
.If you want to do this, you have to expand the lists manually by calling
Add()
in a loop.But if you are expecting very sparse structure (that is, most elements are not set), you should probably use something like
Dictionary<int, Dictionary<int, Dictionary<int, T>>>
.