尝试执行此多维列表插入时我缺少什么?

发布于 2024-12-04 01:48:13 字数 718 浏览 2 评论 0 原文

我正在尝试创建一个可以通过以下方式访问和设置的多维列表:

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;    
        }
    }
}

I am trying to make a multidimensional List that can be accessed and set in the following way:

myObjectVar[1,2,3] = new MyObject();

I have overloaded [,,] in the following way, but the Inserts never get run. What is the correct way to check to see if an index exists because the below code doesn't seem to be working.

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埋情葬爱 2024-12-11 01:48:13

我假设您想要创建类似多维数组的东西,您不必指定边界,并且在设置元素时会扩展。

在这种情况下,您的代码的问题在于您使用了 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 position 2.

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>>>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文