C#Indexof返回值-1

问题描述:

我想从一个列表中获取一个特定项目的索引值。但函数返回值-1。我可否知道indexof return -1的原因是什么?C#Indexof返回值-1

+0

如果该项目不在列表中,可能会发生这种情况。 – praveen

+5

您是否阅读过[documentation](https://msdn.microsoft.com/en-us/library/e4w08k17(v = vs.110).aspx)?特别是它所说的部分:“[返回]如果找到整个列表中第一次出现的项目的从零开始的索引; **否则为-1。**” – maccettura

+0

该项目假设获取索引是在列表 –

IndexOf()正在返回的原因-1是因为您试图找到的项目不存在于列表中。

根据documentationIndexOf将返回“如果找到整个列表中第一次出现的项目的从零开始的索引;否则返回-1”。

您应该仔细检查调试器,您会发现您试图找到索引的项目不在您的清单中。

请记住(同样,这是在文档中)。 “这个方法使用默认的相等比较器EqualityComparer.Default来确定等于T,这是列表中值的类型。”所以,如果你确信你的项目应该在列表中,你应该看你的类型的EqualityComparer。

+0

我做了一个foreach循环来检查这个项目是否存在。它确实存在于列表 –

+0

@NGZen阅读我的最后一段。仅仅因为你在调试器的列表中看到它,并不意味着你的类型的EqualityComparer发现它们是相等的。 – maccettura

+0

好的,我将通过使用Equals函数来检查相等性。谢谢 –