c# - 当我从另一个类调用数组时,数组不会更新
问题描述
我试图为学校作业编写黑白棋游戏,但是
当我从另一个班级调用数组时遇到问题。
我使用这个 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 值?
解决方案
您正在创建一个新表单来检查数组,这一定会失败。
public bool CheckLegal(int Yarray,int Xarray)
{
var Form1 = new Form1();
这就像制造一辆新车来检查您是否将钱包留在控制台中。我的意思是确定你可以制造一辆新车,但你的钱包不可能在那里
考虑将数组设为静态,或在需要时传递数组
延伸阅读
使用 static 修饰符声明一个静态成员,该成员属于类型本身而不是特定对象。static 修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、终结器或类以外的类型一起使用。
数组可以作为参数传递给方法参数。因为数组是引用类型,所以该方法可以更改元素的值。
推荐阅读
- javascript - 为什么 switch 在 Javascript 数组的 for 循环中只运行一次?
- python - 使用 Python 从 xlsm 文件的文件夹中获取相同的工作表
- algorithm - 哪个具有更好的复杂性 f1 = (n+m) +(n+m)log(n+m) 或 f2 = n*m
- reactjs - React Components:在状态变化的兄弟姐妹之间传递数据
- angular - Angular Pipe没有从嵌套的ngFor返回数组
- sitefinity - Sitefinity 7.0 多站点动态模块相关媒体(图片)不适用于第二个站点
- swift - 我收到错误 - 使用未声明的类型“BaseCell” - 在按照教程尝试在 Swift 中创建 Cell 文件时
- c# - C# struct 最佳实践,可能矛盾?
- java - Spring MVC jsp页面映射使用类配置
- c# - 检查字典的多个值以验证答案