You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对象创建异常:子类实例调用setName时重复赋值同一值

问题原因分析

你的核心问题出在遍历赋值的逻辑上:

看这段处理基础动物属性的代码:

foreach (var Animals in list.OfType<Animals>())
{
    Animals.setId(list);
    Animals.setAge(age);
    Animals.setDiet(diet);
    Animals.setGender(gender);
    Animals.setName(name);
}

这段代码会遍历列表里所有的Animals子类实例,把它们的name全部设置为当前textbox.Text的内容。

举个实际执行的场景:

  1. 第一次创建Turtle实例加入列表,执行循环后,这只乌龟的name被设为当时文本框里的内容,比如"小绿龟"。
  2. 修改文本框内容为"小黄鸟",创建Bird实例加入列表。此时执行循环,会把列表里的乌龟和小鸟的name都改成"小黄鸟"——旧动物的名字被新的文本框内容覆盖了,所以看起来所有动物都是同一个名字。

本质是你没有给刚创建的那只新动物单独赋值name,而是每次都给列表里所有动物重复刷一遍最新的文本框值,旧实例的name自然被覆盖成新内容了。


内容的提问来源于stack exchange,提问作者LOTUSxMw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:35:22