从C#中的列表获取引用/地址
收藏

我知道c不处理指针,但我想知道当我知道列表的第一个元素时,是否可以得到它的ref?
例如:
假设我有一个定义为

List<T> abc  

如果我有ABC[0],我能得到ABC的参考吗?
我是新来的,如果我的问题有点怪,我很抱歉。在C/C++中,通过ABC〔0〕,可以得到数组ABC的地址。当我们知道收藏中的一个项目时,C是否提供了类似的工具来帮助我们参考收藏本身?
谢谢,


最佳答案:

在C++中,集合并不像C++中那样工作,例如,可以将同一对象添加到多个不同的集合中,因此请求获取包含在其中的对象的列表是没有意义的,因为它可以在许多列表中(或者没有,或者甚至在同一列表中多次)。

object myObject = new object();

List<object> list = new List<object>();
list.Add(myObject);

object[] someArray = new object[] { myObject  };
Assert.AreEqual(list[0], someArray[0]);

如果这有助于您将C中的列表视为指针的列表,这些指针引用存储在指针本身对您隐藏的地方的对象,尽管您知道实际上实现可能更复杂(而且也不相关)。
如果列表中的对象与该列表的列表内容之间存在关系,则由您明确声明并跟踪该realtionsip是什么,例如通过列表中对象的Parent属性
List<T> myList = new List<T>();

// Whenever an item is added to myList set the Parent property
myList.Add(item);
item.Parent = myList;

这就是windows窗体为维护容器中的控件与包含这些控件的容器之间的关系所做的操作。显然,如果有人试图将同一对象添加到多个列表中,您应该决定该怎么做。

    公众号
    关注公众号订阅更多技术干货!