【发布时间】:2012-07-05 19:06:47
【问题描述】:
这段代码给了我这个错误:“无法将类型 ArrayList[] 隐式转换为 ArrayList[][]”在这一行:m_grid[gridIndexX] = new ArrayList[Height]; 但我该如何以另一种方式做到这一点?当 m_grid 数组是二维数组时它可以工作,但作为一个三维数组它不起作用。谢谢您的帮助。
private ArrayList[][][] m_grid;
private void initialize() {
Width = 5;
Height = 5;
Depth = 5;
m_grid = new ArrayList[Width][][];
}
public void Refresh(ref ArrayList particles) {
m_grid = null;
m_grid = new ArrayList[Width][][];
if (particles != null) {
for (int i = 0; i < particles.Count; i++) {
FluidParticle p = (FluidParticle) particles[i];
int gridIndexX = GetGridIndexX(ref p);
int gridIndexY = GetGridIndexY(ref p);
int gridIndexZ = GetGridIndexZ(ref p);
// Add particle to list
if (m_grid[gridIndexX] == null) {
m_grid[gridIndexX] = new ArrayList[Height];
}
if (m_grid[gridIndexX][gridIndexY][gridIndexZ] == null) {
m_grid[gridIndexX][gridIndexY][gridIndexZ] = new ArrayList();
}
m_grid[gridIndexX][gridIndexY][gridIndexZ].Add(i);
}
}
}
【问题讨论】:
-
没有三维
ArrayList这样的东西。你所拥有的是一个三维 ArrayLists 数组... -
也许开始定义一些你只能拥有一个 List
的类是个好主意? -
是的,我实际上是想说@codesparkle
-
您应该使用
List<T>而不是过时的ArrayList。它们避免装箱和拆箱,编译器可以对它们执行类型检查。它们也更具可读性,使其更易于使用。 -
好的,我会尝试使用它,感谢您的建议
标签: c# multidimensional-array arraylist