c# - 如何为多个数组添加值?

时间:2014-10-29 13:42:30

标签: c# arrays multidimensional-array

我在这里有这个数组:

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.但是如何?

3 个答案:

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