我从诸如“是否是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...


希望这可以帮助!

07-24 09:45
查看更多