我正在研究.NET上的一个小应用程序,我需要用2个不同的列表指向相同的数据,我想知道是否内存是重复的,例如public class Person{public string name;public int age;....public Person(name, age){this.name = name;t...

我正在研究.NET上的一个小应用程序,我需要用2个不同的列表指向相同的数据,我想知道是否内存是重复的,例如
public class Person
{
public string name;
public int age;
....
public Person(name, age)
{
this.name = name;
this.age = age;
}
}
SortedList<string> names;
SortedList<int> ages;
Person person1 = new Person("juan",23);
names.add("juan",person1);
ages.add(23,person1);
我猜.NET作为Java不会复制对象Person,所以它会被保留,所以如果我这样做:
names("juan").age = 24
将更改两个列表中的对象.
这样对吗?
谢谢.
解决方法:
因为Person是一个类,所以您只是将引用放入列表中,因此每个列表都会引用同一个人. Person对象确实不会重复,名称[“juan”]将取消引用原始对象.
然而!这不会使代码完美无缺:
>可能有不止一个23岁的人;排序列表<,>不会那样的
>通过姓名[“juan”]改变年龄不会自动更新年龄;年龄[24]将失败
如果Person是一个struct,那么每次分配时都会复制Person(但是:这不是一个结构的好候选者;不要这样做)
本文标题为:c# – 使用两个列表在.NET上重复内存


基础教程推荐
- C# Winform实现石头剪刀布游戏 2023-01-11
- Unity shader实现多光源漫反射以及阴影 2023-03-04
- C#中类与接口的区别讲解 2023-06-04
- C#通过GET/POST方式发送Http请求 2023-04-28
- 京东联盟C#接口测试示例分享 2022-12-02
- c#读取XML多级子节点 2022-11-05
- c#中利用Tu Share获取股票交易信息 2023-03-03
- C# – NetUseAdd来自Windows Server 2008和IIS7上的NetApi32.dll 2023-09-20
- 使用c#从分隔文本文件中插入SQL Server表中的批量数据 2023-11-24
- C#集合查询Linq在项目中使用详解 2023-06-09