是否有可能在列表中获取项目的当前索引位置?

时间:2014-12-09 18:26:51

标签: c# list override

是否可以在列表中获取项目的位置以执行以下操作?...

public class ListItem
{
    public override string ToString()
    { return PositionInList.ToString(); }
}

public List < ListItem > myList = new List < ListItem >();

3 个答案:

答案 0 :(得分:1)

ListItemList之间应该有联系。例如,您可以添加一个属性来存储具有ListItem

的列表
public List<ListItem> List { get; set; }

public List <ListItem> myList = new List <ListItem>();
myList.Add(new ListItem { List = myList });

然后您可以使用IndexOf方法:

public override string ToString()
{ 
    return List.IndexOf(this).ToString(); 
}

答案 1 :(得分:1)

我不是说你应该这样做,因为知道它的容器的类只是奇怪的,但是你可以这样做:

List<ListItem> parentList;
public ListItem(List<ListItem> parentList)
{
    this.parentList = parentList;
}

public override string ToString()
    { return parentList.IndexOf(this).ToString(); }

当然,在构建过程中,您需要传递父集合。

答案 2 :(得分:-1)

使用List类的.IndexOf()方法将允许您这样做。

var lst = new List<string>();
lst.Add("foo");
lst.Add("bar");

// Output the index, ie: 1
Console.WriteLine(lst.IndexOf("bar"));