c# - 将对象添加到列表,更改所有其他列表对象

标签 c# list

我正在尝试将动物添加到我的动物列表中,但最后添加的动物的值将是列表中的所有动物。

List<Animal> animals = new List<Animal>();
public bool AddAnimal(Animal animal)
        {
            animals.Add(animal); 
            return true;
        } 

Animal animal = new Animal();
private void btnAddAnimal_Click(object sender, RoutedEventArgs e)
        {
            animal.AnimalSize = Size.large;
            animal.Carnivore = true;
            AddAnimal(animal);
        }

这是列表: 大小食肉动物 - 大真

private void btnAddAnimal_Click(object sender, RoutedEventArgs e)
        {
            animal.AnimalSize = Size.large;
            animal.Carnivore = false;
            AddAnimal(animal);
        }

这是添加草食动物后我的动物列表发生的情况:

  • 大小食肉动物
    • 大假
    • 大假

最佳答案

好吧,您实际上并没有添加新的 Animal,您只是在修改已有的 Animal。如果你想添加一个新的动物,你必须创建一个新的对象:

private void btnAddAnimal_Click(object sender, RoutedEventArgs e)
{
  Animal animal = new Animal();
  animal.AnimalSize = Size.large;
  animal.Carnivore = true;
  AddAnimal(animal);
}

关于c# - 将对象添加到列表,更改所有其他列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112020/

相关文章:

C#使用递归字典存储xml有什么缺点

c# - 循环列表空元素

java - 如何在java中从另一个列表中查找一个列表中的项目

c# - 如何获取.NET 6.0 中的时钟序列?

c# - 在 C# 中为大文件创建校验和的最快方法是什么

python - 从列表中的每个值中提取第一个单词

android - 如何对kotlin中的对象列表进行排序?

java - StringBuffer.append() 与 ArrayList<String>.add()

c# - WCF NetTcp 配置问题

c# - 如何在 ASP.Net Core 中更改路由中的 DateTime 格式?