C# 如何更改二维数组中的值

C# 如何更改二维数组中的值,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,我一直在使用c#进行Unity框架编码的二维数组。我正在尝试创建一个具有智能代理的棋盘游戏。所以我试着得到所有的棋子,然后通过Alpha-Beta算法,得到对手的最大数量。但为了做到这一点,我必须检查我板上的每一块。我正在游戏中使用8by8板。所以我用 件[,]件=新件[8,8] 编码以存储碎片。现在我想换一件,取回那几件。 我尝试了几种方法并进行了实验,但我找不到任何方法来获取这个数组并更改一个通用对象,然后检索带有更改的列表 请帮我解决这个问题。提前谢谢 我在这里写下了我的实验。对这件事有什

我一直在使用c#进行Unity框架编码的二维数组。我正在尝试创建一个具有智能代理的棋盘游戏。所以我试着得到所有的棋子,然后通过Alpha-Beta算法,得到对手的最大数量。但为了做到这一点,我必须检查我板上的每一块。我正在游戏中使用8by8板。所以我用

件[,]件=新件[8,8]

编码以存储碎片。现在我想换一件,取回那几件。 我尝试了几种方法并进行了实验,但我找不到任何方法来获取这个数组并更改一个通用对象,然后检索带有更改的列表

请帮我解决这个问题。提前谢谢

我在这里写下了我的实验。对这件事有什么建议或者我做错了什么吗

internal static void TryMoveInImaginaryWay(Piece[,] piece)
{
    int x = 0;
    int y =2;
    int x1 = 1;
    int y1 = 3;

    Moves move = new Moves();
    move.X = x;
    move.Y = y;
    move.X1 = x1;
    move.Y1 = y1;

    // Copping the pieces state
    Piece p = piece[x, y];

    //I am creating a list with those pieces
    List<Piece> temppiecelist = new List<Piece>();

    foreach (Piece pi in piece)
    {
        if (pi == p)
        {
            piece[x1, y1] = p;
            temppiecelist.Add(null);
        }
        else
        {
            temppiecelist.Add(pi);
        }
    }

    Piece[,] piek = temppiecelist; // can't convert it says Cannot Implicitly convert type "System.Collection.Generic.List<Piece>' to Piece[*,*]'"

    // I know i can't convert like this, but any ideas.
    //Piece[,] piek = new Piece[8, 8];
内部静态无效TryMoveInImaginaryWay(件[,]件)
{
int x=0;
int y=2;
int-x1=1;
int y1=3;
移动=新移动();
move.X=X;
move.Y=Y;
move.X1=X1;
move.Y1=Y1;
//从国家的角度来看
件p=件[x,y];
//我正在用这些作品制作一个列表
List temppiecelist=新列表();
foreach(件中件)
{
if(pi==p)
{
件[x1,y1]=p;
temppiecelist.Add(空);
}
其他的
{
temppiecelist.Add(pi);
}
}
Piece[,]piek=temppiecelist;//无法转换,表示无法将类型“System.Collection.Generic.List”隐式转换为Piece[*,*]”
//我知道我不能像这样皈依,但我有任何想法。
//一块,一块=新的一块[8,8];

我想问的是,是否有任何方法可以更改上面的片[,]数组列表值。我想要与输出相同的格式。

看起来您试图做的是复制电路板,然后在该电路板上移动

我不明白为什么你会被列入清单;是什么让你相信清单是正确的解决方案?我很想知道;通过了解人们为什么会对程序编写得出不好的结论,我可以帮助他们编写更好的程序

要制作电路板的变异副本,只需复制电路板并对副本进行变异:


完成。

标记已删除。请不要使用与您的问题或代码没有直接关系的标记。这可能会给您的问题带来负面的关注,因为它会惹恼那些遵循错误放置的标记的人。UnityScript标记也是如此,这是C#。感谢您通知我。:)现在格式错误已被消除解决了,我还是不太明白你在问什么。你为什么要使用列表?我们不知道你在做什么,或者你为什么要这样做,所以很难建议你正确的做法。你是对的。谢谢。是的,我只是一个开始,我的代码标准不是很好。谢谢@Eric
internal static void TryMoveInImaginaryWay(Piece[,] original)
{
    int x0 = 0;
    int y0 = 2;
    int x1 = 1;
    int y1 = 3;
    Piece[,] copy = (Piece[,])original.Clone();
    copy[x1,y1] = copy[x0,y0];
    copy[x0,y0] = null;