Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以获得一个项目';列表中的当前索引位置是什么?_C#_List_Overriding - Fatal编程技术网

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"));