当我从另一个类调用数组时,数组不会更新

时间:2018-12-22 23:59:11

标签: c# arrays class

我正在尝试为学校作业编写黑白棋游戏,但我有一个
 我从另一个类调用数组时出现问题。

我使用此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语句为true,则在特定点更改Gamestate数组的值。唯一的问题是,当我在Checklegal方法中调用Gamestate数组时,没有得到更新的值。但是,如果CheckLegal方法不在其他类中,则可以获取更新后的值。

任何人都可以解释一下它是如何工作的吗?
以及如何在PlayerMove类中获取更新的Gamestate值?

1 个答案:

答案 0 :(得分:1)

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

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

这就像建造一辆新车来检查您是否将钱包留在控制台中。我的意思是确定您可以制造一辆新车,但是您的钱包没有机会

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


进一步阅读

static (C# Reference)

  

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

Passing arrays as arguments (C# Programming Guide)

  

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