我从诸如“是否是Possible to store references to objects in list?”之类的问题知道,您可以在不从列表中删除对象的情况下修改对象的属性。因此,您可以创建一个包装器类,然后将您的对象放入其中,然后修改值。但是,如果您要尝试更改对象本身,则...
我想知道的是:您可以制作一系列对象,将它们存储在类似结构的列表中,然后从列表或对象中访问它们吗?您能否使对象和列表中的对象表现为相同的对象?如果使用数组,可以这样做吗?
Using System;
Using System.Collections.Generic;
Namespace Project1
{
Class Test
{
Public static void Main()
{
int one = 1;
int two = 2;
int num = 3;
List<int> myList = new List<int>();
myList.Add(one);
myList.Add(two);
myList.Add(num);
myList[2] = 4; // I want this to also set num to 4
num = 5; // I want this to also set myList[2] to 5
Console.WriteLine(myList[2]); //prints 4
Console.WriteLine(num); //prints 5
}
}
}
最佳答案
看一下您的代码示例,我想我理解您的意思。基本上,您想直接访问数组中的元素,而不是通过索引属性访问器访问。只要数组中的项目是引用类型,这样做就非常简单。但是,这不适用于值类型,因为当涉及到值类型时,独立变量和indexed属性指向不同的内存存储空间。
为了显示:
listOfPersons[2] = new Person { Name = "Homer Simpson", Age = 35 };
Console.WriteLine(listOfPersons[2].Name); // will show Homer Simpson
Person myself = listOfPersons[2];
myself.Name = "Bart Simpson";
Console.WriteLine(myself.Name); // will show Bart Simpson
Console.WriteLine(listOfPersons[2].Name); // will show Bart Simpson
Console.WriteLine(listOfPersons[2].ReferenceEquals(myself)); // will show true
另一方面:
listOfInts[2] = 2;
Console.WriteLine(listOfInts[2]); // will show 2
int myInt = listOfInts[2];
myInt = 5;
Console.WriteLine(myInt); // will show 5
Console.WriteLine(listOfInts[2]); // will show 2...
希望这可以帮助!