C#对象数组更改所有元素属性

C#对象数组更改所有元素属性,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,刚开始学习C#并努力理解正在发生的事情。这是我问题的简化版本。我会包括实际的代码,所有的属性和方法,但这是一个大项目,根本不可能。不过,这个构建的场景应该模拟我遇到的问题 比如说我有一门课叫狗。狗有多个属性:\名称、\品种和\图像。现在考虑我还有另一个类,Kennel,它有属性:名字,地址,和狗,其中,我定义的狗是一个2D类型的狗。(这些是属性,getter/setter遵循标准符号) 现在在我的主方法中,我创建并实例化了Kennel类型的变量,如下所示: Kennel kennel = new

刚开始学习C#并努力理解正在发生的事情。这是我问题的简化版本。我会包括实际的代码,所有的属性和方法,但这是一个大项目,根本不可能。不过,这个构建的场景应该模拟我遇到的问题

比如说我有一门课叫狗。狗有多个属性:\名称、\品种和\图像。现在考虑我还有另一个类,Kennel,它有属性:名字,地址,和狗,其中,我定义的狗是一个2D类型的狗。(这些是属性,getter/setter遵循标准符号)

现在在我的主方法中,我创建并实例化了Kennel类型的变量,如下所示:

Kennel kennel = new Kennel();

for (int i = 0; i < xlength; i++)
    {
       for (int j = 0; j < ylength; j++)
        kennel.Dogs[i, j] = new Dog();
    }
它把所有的狗都命名为“fido”。不仅仅是狗(12,22)


这是什么原因?如何更改一只狗的属性?

我可以使用三种情况来导致这种症状:

  • 实际上只有一个
    Dog
    对象,数组中的每个单元格都是对该单个对象的引用;如果是:修复数组初始化以创建多个不同的对象;根据问题中的代码,情况似乎并非如此
  • 您有多个
    Dog
    对象,但保存名称的字段是一个
    static
    字段;如果是:修复该字段(删除
    静态
  • 您有多个
    Dog
    对象,但名称是通过对另一个中间对象的单独引用来实现的,该对象在所有对象之间共享;如果是:修复中间引用

  • 您不应该包含整个代码,而应该尝试提取每个人都可以自己编译和尝试的代码。有时,您甚至可以在创建示例时确定错误的原因。这是一个unity游戏,实际代码很难复制。我认为这只会让那些可能提供帮助的人感到困惑。此外,如果我是对的。。。这不是一个bug,而是C语言的预期功能。我只是觉得我做错了。我们可以看看Dog.Name属性的定义,以及它涉及的任何字段吗?另外,我们可以看看填充数组的代码吗?您是否可能创建了一个对象,并在数组中的多个单元格中放置了对同一对象的引用?@ragnvaldr.js您不需要为您的应用程序提供完整的代码,您需要提供仍然重现问题的最小片段。因此,请只提取处理此数组的代码,确保该代码段本身在运行时会导致问题,然后提供该代码段。
    kennel.Dogs[12,22].Name = "Fido"