如何检查在c#全局类中找到的数组中是否存在对象
本文关键字:数组 对象 存在 是否 全局 何检查 检查 | 更新日期: 2023-09-27 18:04:47
我正在制作一款具有全局(静态)类MedGameController的游戏。在我的类中,我有两个包含15个对象的数组,每个数组包含每个玩家单位的逻辑。在游戏中,玩家将进入一个表单,在那里他们可以看到自己已经创建的单位,并拥有创建更多单位的按钮。我不知道如何检查当前单元是否存在,所以我甚至不能创建一个单元。我如何检查我的单位类的实例是否存在于数组中?单位数组必须有一个作用域,它包含两到三种形式,所以这就是为什么我在一个全局类中创建它们。下面是全局类:
static class MedGameController
{
static int ply1pts;
static int ply2pts;
Squad[] ply1squads = new Squad[15];
Squad[] ply2squads = new Squad[15];
public static int SetPly1Pts
{
get { return ply1pts; }
set { ply1pts = value; }
}
public static int SetPly2Pts
{
get { return ply2pts; }
set { ply2pts = value; }
}
public static int SquadSetUp
{
get { return squadcreation; }
set { squadcreation = value; }
}
public static void Player1Squads
{
This is where I think i'm supposed to check if they exist then if it doesn't then I create the instance of the squad class
}
}
}
试试这个:
if (ply1Squads.Length == 0)
{
for (int i = 0; i < 15; i++)
{
ply1Squads[i] = new Squad();
}
}
你已经声明了ply1Squads
有15个Squad
对象,所以这只是一个初始化对象的问题。
你可以对ply2Squads
做同样的事情。
顺便说一句,您需要将ply1Squads
和ply2Squads
声明为static
,因为静态类不能有实例成员:
static Squad[] ply1Squads = new Squad[15];
static Squad[] ply2Squads = new Squad[15];
默认情况下,这些将是私有变量,因此您也需要为这两个数组设置属性:
public static Squad[] Ply1Squads
{
get
{
return ply1Squads;
}
set
{
ply1Squads = value;
}
}
public static Squad[] Ply2Squads
{
get
{
return ply2Squads;
}
set
{
ply2Squads = value;
}
}
额外的想法
如果你的设计目标是让MedGameController
处理与小队相关的所有信息,我将远离你出现正在做的事情-为每个Squad
数组(即Player1Squads
)创建重复的方法。相反,应该传入某种标志,告诉控制器使用哪个数组,就像这样:
public void CreateSquads(int playerNum)
{
select (playerNum)
{
case 1:
for (int i = 0; i < 15; i++)
{
ply1Squads[i] = new Squad();
}
break;
case 2:
for (int i = 0; i < 15; i++)
{
ply2Squads[i] = new Squad();
}
break;
default:
// Handle wrong number here
break;
}
}
这是一个(非常小的)重构步骤。我会列出你想让控制器做的事情,然后找出如何避免每个函数到两个数组的1-1映射。
希望这能给你一些意义,并给你一个方向。我脑子里有更多的想法,但我还不能把它们提出来。如果我这样做了,如果你感兴趣的话,我会添加更多(在前半打之后再编辑一两个是什么,对吧?:))。