首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#对象列表- .Add() by reference .Add() by value

C#对象列表- .Add() by reference .Add() by value
EN

Stack Overflow用户
提问于 2016-12-31 02:24:47
回答 0查看 1.4K关注 0票数 0

我有一个应用程序可以查询XML (文件),然后将值存储在列表中。我在不同的文件中以相同的方式定义了两个类:

代码语言:javascript
复制
namespace Cnc11Info
{
    public class AxisInfo
    {
        public char V300_Label { get; set; }
        public double V300_SlowJog { get; set; }
        public double V300_FastJog { get; set; }
    }
}

namespace Cnc11Info
{
    public class DriveInfo
    {
        public static double DriveIndex { get; set; }  
        public static string DriveType { get; set; }
        public static double DriveVersion { get; set; 
    }
}

声明列表相同:

代码语言:javascript
复制
public static List<AxisInfo> axesInfo = new List<AxisInfo>();
public static List<DriveInfo> driveInfo = new List<DriveInfo>();  

.Add()列出相同的新项目:

代码语言:javascript
复制
MainWindow.axesInfo.Add(new AxisInfo());
MainWindow.driveInfo.Add(new DriveInfo());   

并将数据插入到每个对象的属性中:

代码语言:javascript
复制
MainWindow.axesInfo[index].GetType().GetProperty(propertyName.ToString()).SetValue(MainWindow.axesInfo[index], value);

MainWindow.driveInfo[index].GetType().GetProperty(propertyName.ToString()).SetValue(MainWindow.driveInfo[index], value);

其中index = 0-7。在每次迭代中,项目中的每个属性的值都被正确设置,对于列表中的所有8个项目,axesInfoi的每个项目都被正确设置,但对于driveInfo,每个属性都被设置为相同的值。我假设简短的答案是driveInfo中的所有对象都是引用,但是为什么呢?该如何修复呢?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41400886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档