如何从 C# 中的对象数组中删除一个对象
How to remove an object from an array of objects in C#
我不知道我正在尝试做的事情在 C# 中是否可行,而且我无法在线找到答案。我有 4 个敌方对象。其中一个死了。我希望将那个敌人从阵列中移除。如果敌人在阵列中间,我希望下一个敌人占据它的位置,这样阵列中间就没有空位。这是代码(我写的“//remove here”是我想要删除对象的地方):
public static int numberOfEnemies = random.Next(1, 4);
// create 1-4 enemies
public static Enemy[] enemyNumber = new Enemy[numberOfEnemies];
// initialize enemies
int h = 0;
do
{
enemyNumber[h] = new Enemy(playerLevel);
h++;
System.Threading.Thread.Sleep(25);
} while (h != numberOfEnemies);
// code where the fight happens i did not include
// enemy dies
if (enemyNumber[0].Ehealth <= 0){
{
Console.WriteLine("Enemy {0} is dead!", eName);
// remove here
}
}
你最好像有人提到的那样使用列表。这将允许您删除对象而不用担心空 space (它将被下一个对象填充)如果没有,每次从数组中删除某些内容时您将需要这样的东西(假设 Enemy
不是结构)
enemyNumber = enemyNumber.Where(enem => enem != null).ToArray();
同时重命名 enemyNumber
,因为它是一组敌人,而不是单个数字:)
我不知道我正在尝试做的事情在 C# 中是否可行,而且我无法在线找到答案。我有 4 个敌方对象。其中一个死了。我希望将那个敌人从阵列中移除。如果敌人在阵列中间,我希望下一个敌人占据它的位置,这样阵列中间就没有空位。这是代码(我写的“//remove here”是我想要删除对象的地方):
public static int numberOfEnemies = random.Next(1, 4);
// create 1-4 enemies
public static Enemy[] enemyNumber = new Enemy[numberOfEnemies];
// initialize enemies
int h = 0;
do
{
enemyNumber[h] = new Enemy(playerLevel);
h++;
System.Threading.Thread.Sleep(25);
} while (h != numberOfEnemies);
// code where the fight happens i did not include
// enemy dies
if (enemyNumber[0].Ehealth <= 0){
{
Console.WriteLine("Enemy {0} is dead!", eName);
// remove here
}
}
你最好像有人提到的那样使用列表。这将允许您删除对象而不用担心空 space (它将被下一个对象填充)如果没有,每次从数组中删除某些内容时您将需要这样的东西(假设 Enemy
不是结构)
enemyNumber = enemyNumber.Where(enem => enem != null).ToArray();
同时重命名 enemyNumber
,因为它是一组敌人,而不是单个数字:)