有没有一种方法可以更改C#数组内部的元组值

本文关键字:数组 内部 元组 一种 方法 有没有 | 更新日期: 2023-09-27 17:58:04

我使用的数组是int[,,],我想在一个方法中生成每个(我假设是)元组的第一个值,然后我想多次修改后两个值。(在另一种方法中)

例如:

int[,,] MyArrayGet()
{    
    int [,,] myArray;
    int [,,] myArray = new int[9,9,9];
    for (int i = 0; i < 10; i++)
    {
        myArray[i] = [SomeInt,0,0];
    }
    return myArray;
}
int[,,] MyArrayModify(int[,,] myArray)
{   
    for (int i = 0; i < 10; i++)
    {
        if (somthing is true) 
        {
            myArray[i] = [dont change this value,n+1,dont change this value]
        }
        if (somthingelse is true)
        {
            my  Array[i] = [dont change this value,dont change this value,n+1]
    }
}

有没有一种快速简单的方法可以做到这一点?

我已经检查了这个问题如何从List<元组<int,int,字符串>gt;?然而,我觉得它并不能回答我的问题。

有没有一种方法可以更改C#数组内部的元组值

元组在设计上是不可变的。修改时只需创建一个新的。

IEnumerable<Tuple<int, int, int>> Get()
{
    for (int i = 0; i < 10; i++)
    {
        yield return Tuple.Create(i, 0, 0);
    }
}
IEnumerable<Tuple<int, int, int>> Modify(IEnumerable<Tuple<int, int, int>> tuples)
{
    foreach (var tuple in tuples)
    {
        if (tuple.Item1 < 5)
        {
            yield return Tuple.Create(tuple.Item1, tuple.Item2 + 1, tuple.Item3);
        }
        else
        {
            yield return Tuple.Create(tuple.Item1, tuple.Item2, tuple.Item3 + 1);
        }
    }
}

您的代码看起来更像javascript而不是C#。int[,,]是3D数组,而不是3个项目的数组。

CCD_ 3是3个项目的CCD_ 4的数组。如果您不是初学者并且使用LINQ,IEnumerable<Tuple<int, int, int>>是一个更好的版本。

您必须用包含更新值的新元组替换要修改的元组。或者,您可以创建一个包含所需字段和公共属性的类。这只需要几秒钟的时间,可能会使您的代码更可读。