C# 是否可以获得一个项目';列表中的当前索引位置是什么?
是否有可能获得一个项目在列表中的位置以执行以下操作C# 是否可以获得一个项目';列表中的当前索引位置是什么?,c#,list,overriding,C#,List,Overriding,是否有可能获得一个项目在列表中的位置以执行以下操作 public class ListItem { public override string ToString() { return PositionInList.ToString(); } } public List < ListItem > myList = new List < ListItem >(); 公共类列表项 { 公共重写字符串ToString() {return PositionIn
public class ListItem
{
public override string ToString()
{ return PositionInList.ToString(); }
}
public List < ListItem > myList = new List < ListItem >();
公共类列表项
{
公共重写字符串ToString()
{return PositionInList.ToString();}
}
公共列表myList=新列表();
在列表项
和列表
之间应该有一个连接。例如,您可以添加一个属性来存储包含列表项的列表:
public List<ListItem> List { get; set; }
public List <ListItem> myList = new List <ListItem>();
myList.Add(new ListItem { List = myList });
我不是说你应该这样做,因为一个类知道它的容器是很奇怪的,但是你可以这样做:
List<ListItem> parentList;
public ListItem(List<ListItem> parentList)
{
this.parentList = parentList;
}
public override string ToString()
{ return parentList.IndexOf(this).ToString(); }
列表父列表;
公共列表项(列表父列表)
{
this.parentList=父列表;
}
公共重写字符串ToString()
{返回parentList.IndexOf(this.ToString();}
当然,在构造过程中,您需要传入父集合。使用List类的.IndexOf()
方法将允许您这样做
var lst = new List<string>();
lst.Add("foo");
lst.Add("bar");
// Output the index, ie: 1
Console.WriteLine(lst.IndexOf("bar"));
var lst=newlist();
第1条添加(“foo”);
第1条添加(“酒吧”);
//输出索引,即:1
控制台写入线(第一索引条);
列表。FindIndex
可以为您提供索引,但我认为,您的元素不会知道它在列表中的位置。这是一种很好的方法,但不幸的是,在这种情况下,我无法在构造过程中传递任何内容。@Essential您可以通过单独的属性分配它(虽然会有一段时间,parentList
为空)。您必须以某种方式将列表提供给子类。
var lst = new List<string>();
lst.Add("foo");
lst.Add("bar");
// Output the index, ie: 1
Console.WriteLine(lst.IndexOf("bar"));