首页 > 解决方案 > 当我从另一个类调用数组时,数组不会更新

问题描述

我试图为学校作业编写黑白棋游戏,但是
当我从另一个班级调用数组时遇到问题。

我使用这个 if 语句来检查移动是否合法。它从 playermove 类调用 CheckLegal move 方法。

 if(PlayerMove.CheckLegal(Yarray,Xarray))
                {
                    //changes the turn
                    if (turn) { turn = false; } else { turn = true; }
                    if (turn) { value = 1; } else { value = -1; }

                    GameState[Yarray, Xarray] = value;

                    Board.Invalidate();
                }

CheckLegal 方法是这样的。

public bool CheckLegal(int Yarray,int Xarray)
        {
            var Form1 = new Form1();
            bool result;
            if(Convert.ToInt32(Form1.GameState.GetValue(Yarray,Xarray)) == 0) { result = true; }
            else { result = false; }
            return result;
        }

If 语句,如果为真,则在某个点更改 Gamestate 数组的值。唯一的问题是,当我在 Checklegal 方法中调用 Gamestate 数组时,我没有得到更新的值。但是如果 CheckLegal 方法不在另一个类中,我会得到更新的值。

谁能解释一下这是如何工作的?
以及如何在我的 PlayerMove 类中获取更新的 Gamestate 值?

标签: c#arraysclass

解决方案


您正在创建一个新表单来检查数组,这一定会失败。

public bool CheckLegal(int Yarray,int Xarray)
{
    var Form1 = new Form1();

这就像制造一辆新车来检查您是否将钱包留在控制台中。我的意思是确定你可以制造一辆新车,但你的钱包不可能在那里

考虑将数组设为静态,或在需要时传递数组


延伸阅读

静态(C# 参考)

使用 static 修饰符声明一个静态成员,该成员属于类型本身而不是特定对象。static 修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、终结器或类以外的类型一起使用。

将数组作为参数传递(C# 编程指南)

数组可以作为参数传递给方法参数。因为数组是引用类型,所以该方法可以更改元素的值。


推荐阅读