让对象意识到自己在列表中的位置的最好方法是什么?
本文关键字:位置 方法 是什么 意识到 对象 自己 列表 | 更新日期: 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属性来找到它的朋友。