我正在尝试为学校作业编写黑白棋游戏,但我有一个
我从另一个类调用数组时出现问题。
我使用此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值?
答案 0 :(得分:1)
您正在创建一个新表单来检查数组,这肯定会失败。
public bool CheckLegal(int Yarray,int Xarray)
{
var Form1 = new Form1();
这就像建造一辆新车来检查您是否将钱包留在控制台中。我的意思是确定您可以制造一辆新车,但是您的钱包没有机会
考虑将数组设为静态,或在需要时将数组传递给周围
进一步阅读
使用static修饰符声明一个静态成员,该成员属于 类型本身而不是特定对象。静态修饰符 可以与类,字段,方法,属性,运算符一起使用, 事件和构造函数,但不能与索引器一起使用, 终结器或类以外的类型。
Passing arrays as arguments (C# Programming Guide)
数组可以作为参数传递给方法参数。因为数组 是引用类型,该方法可以更改元素的值。