我正在尝试使用对象列表创建一个简单的模拟,并使其重复执行计算以代表农民。它有一种方法可以随机增加农民的钱数,每个农民从 100 美元开始
public class Farmer
{
public decimal money { get; set; }
public Farmer()
{
money = 100;
}
public void doOneYear() //Represents how much money the farmer earned
{
Random random = new Random();
decimal growth = random.Next(0, 100);
decimal percentage = (growth / 1000);
money = money * (1 + percentage);
}
}
运行的代码是这样的
List<Farmer> farmers = new List<Farmer>();
int count = 0;
while (count < 10)
{
Farmer newFarmer = new Farmer();
farmers.Add(newFarmer);
count++;
}
foreach(var farmer in farmers)
{
int years = 0;
while (years < 10)
{
farmer.doOneYear();
years++;
}
}
foreach (var farmer in farmers)
{
MessageBox.Show(farmer.money.ToString());
}
然而,我得到的结果只是重复列表中的第一个对象。如果我在调试模式下逐步完成整个过程,它可以正常工作,但是当我让它运行时,对象似乎是重复的。