Johnny
Johnny

Reputation: 612

c# - How can I add a value to a multi array?

I have this array here:

float[, ,] vectors;

int pos = 0;

void Start() {
   vectors = new float[,,] { {
       { 0, 1, 1 }, 
       { 0, 2, 2 } }
    };        
}

This works. I fill the array with numbers.

Now I want to add some values again to a given position. But how?

This are not working:

vectors[pos] = new float[,,] { { { 33, 44, 55 } } };     

or

vectors[pos] = { { { 33, 44, 55 } } };     

I searched, but not found the right answer.

EDIT: I want something like this:

[0]+
   [0] {1, 2, 3},
   [1] {4, 5, 6}

[1]+
   [0] {11, 22, 33},
   [1] {44, 55, 66},
   [2] {77, 88, 99}

...
etc.

Now, e.g. I want add values {10,10,10} to pos = 0. But how?

Upvotes: 1

Views: 129

Answers (3)

krystan honour
krystan honour

Reputation: 6783

This will work for you, the array is assigned, you cannot change it you must expand the array as is.

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

Upvotes: 0

juharr
juharr

Reputation: 32266

If you want to add values I suggest using generic lists instead of arrays. And you should create your own Vector class or find one that is suitable to your needs like this.

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

Then you can do the following

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

And your vectors will contain

[0]
    [0] {0, 1, 1}
    [1] {0, 2, 2}
    [2] {33, 44, 55}

Note that if you need to add to the first dimention you have to do this.

vectors.Add(new List<Vector>());

vectors[1].Add(new Vector(1, 2, 3));

And now you have

[0]
    [0] {0, 1, 1}
    [1] {0, 2, 2}
    [2] {33, 44, 55}
[1]
    [0] {1, 2, 3}

Upvotes: 2

Median Hilal
Median Hilal

Reputation: 1531

You should determine the other positions within the array, you are just specifying one. If your problem cannot be solved within lists you can try array of arrays as follows

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

Upvotes: 0

Related Questions