让对象意识到自己在列表中的位置的最好方法是什么?

本文关键字:位置 方法 是什么 意识到 对象 自己 列表 | 更新日期: 2023-09-27 18:04:38

我有一个对象,它保存在某个列表中。然而,对象本身应该知道它在一个列表中,并且在这个列表中有邻居。使用该对象的其他实体虽然不必知道整个列表,但仍然需要知道该对象的邻居,甚至在对象的邻居发生变化时得到通知。

一个简单的例子是保留图像列表并在屏幕上显示,旁边有"上一步"answers"下一步"按钮,而源列表在背景中自行更改。

比如说,在这个例子中,我有这样的内容:

public class ImageListController
{
    private List<Image> m_ImageList = new List<Image>();
    // ... some code changing the list
}
public class ImageView
{
    // ...
    private Image m_Image;
    private Button m_Next;
    private Button m_Previous;
    void OnImageUpdate() // subscribed to events from m_Image
    {
        if (m_Image.Previous != null)
        {
            m_Previous.Enabled = true;
            m_Previous.Action = (System.Action) (() => DisplayImage(m_Image.Previous));
        }
        else
        {
            m_Previous.Enabled = false;
        }
    }
}

实现这个的最好方法是什么?

(当然,我可以自己从头开始实现,但我怀疑已经存在某种内置集合类型用于此目的。)

让对象意识到自己在列表中的位置的最好方法是什么?

让对象知道自己在列表中的位置的最好方法是什么?

对象不应该知道它是在列表、数组、字段还是局部。如果同一个对象在多个地方被引用你会怎么解决这个问题?这对我来说没有意义。

这听起来像你在寻找LinkedList,如果你得到了节点,你可以使用Next和Previous属性来找到它的朋友。