我在这里有这个数组:
float[, ,] vectors;
int pos = 0;
void Start() {
vectors = new float[,,] { {
{ 0, 1, 1 },
{ 0, 2, 2 } }
};
}
这很有效。我用数字填充数组。
现在我想再次将某些值添加到给定位置。但是如何?
这不起作用:
vectors[pos] = new float[,,] { { { 33, 44, 55 } } };
或
vectors[pos] = { { { 33, 44, 55 } } };
我搜索过,但找不到正确的答案。
编辑: 我想要这样的东西:
[0]+
[0] {1, 2, 3},
[1] {4, 5, 6}
[1]+
[0] {11, 22, 33},
[1] {44, 55, 66},
[2] {77, 88, 99}
...
etc.
现在,例如我想将值{10,10,10}添加到pos = 0.但是如何?
答案 0 :(得分:2)
如果你想添加值我建议使用通用列表而不是数组。你应该创建自己的Vector类,或者找到一个适合你需要的类。
public class Vector
{
public float X { get; private set; }
public float Y { get; private set; }
public float Z { get; private set; }
public Vector(float x, float y, float z)
{
X = x;
Y = y;
Z = z;
}
}
然后你可以做以下
var vectors = new List<List<Vector>>
{
new List<Vector>{
new Vector(0, 1, 1),
new Vector(0, 2, 2)
}
};
vectors[0].Add(new Vector(33,44,55));
你的载体将包含
[0]
[0] {0, 1, 1}
[1] {0, 2, 2}
[2] {33, 44, 55}
请注意,如果您需要添加第一维,则必须执行此操作。
vectors.Add(new List<Vector>());
vectors[1].Add(new Vector(1, 2, 3));
现在你有了
[0]
[0] {0, 1, 1}
[1] {0, 2, 2}
[2] {33, 44, 55}
[1]
[0] {1, 2, 3}
答案 1 :(得分:0)
您应该确定数组中的其他位置,您只需指定一个位置。如果您的问题无法在列表中解决 您可以按如下方式尝试数组:
float [][][] x = new float [n][m][];
// initialize the third dimension until m is reached
x[0] = new float {1,2,3,4,5}; // specify whatever value you want
x[1] = new float {3,2,4};
x[2] = new float [3];
// etc until m is reached
// do the same for the n dimension
答案 2 :(得分:0)
这对您有用,数组已分配,您无法更改它必须按原样扩展数组。
float[, ,] vectors;
int pos = 0;
vectors = new float[,,]
{
{
{ 0, 1, 2 }, { 0, 3, 4 }
}
};
vectors = new float[,,]
{
{
{vectors[0,0,0], vectors[0,0,1], vectors[0,0,2]}, { vectors[0,1,0], vectors[0,1,1], vectors[0,1,2] }, { 33,44,55}
}
};