我一直让我的所有数组都填充了我游戏中的同一个对象,该对象使用此数组来跟踪衍生对象的列表。它有代码,基本上是:Visual Studio断点问题
for(int i = 0; i < wildPets.Length; i++)
{
Pet pet = new Pet();
wildPets[i] = pet;
}
现在,当我刚刚运行的代码,所有的宠物都是一样的,因为它只是做了一个新的宠物,并将其分配给阵列的各项指标(名称相同, ID,HP等)。我使用断点功能来检查为什么会发生这种情况,并注意到当我遍历代码时,对象总是不同的,但没有断点发生错误。我认为断点是一个非常有用的功能,但是现在我不知道它是否真正代表我的代码。有什么我在这里失踪。我有一个可以发布
构造示例代码:
public Pet()
{
Random r = new Random();
type = ToType(r.Next(10));
double temp = (GetHP(type, r));
if (temp > 0)
{
hp5 = temp;
}
temp = (GetSpeed(type, r));
if (temp > 0)
{
speed5 = temp;
}
level = r.Next(5, 16);
rarity = r.Next(100);
rarityLevel = GetRarity();
DisplayImage = frmMain.petImages[petID];
abilities = FillAbilities(type, abilities);
}
它与随机水平,稀有性,ID,和其他的东西一个新的宠物。我使用的是手表部分是视觉工作室。两张图片显示了在后台运行的方法和数组的内容,以及当我设置断点并逐行执行时。一个阵列中充满了具有相同ID的宠物(相同的一切,ID只是一种快速注意的方式),另一个阵列中充满了新的不同的宠物对象,例如代码应该如何运行。
相同的对象,但不同的实例,这是什么代码这样做 – Fredou
如何检查对象是否相同? – Peter
我不知道你在问什么。你可以详细说明你的问题还是你的代码?另外'没有断点发生错误'<=什么错误,你没有提供例外或错误消息。为什么他们是相同的,你有一个循环,并为数组中的每个项目创建一个新的宠物。 – Igor