2017-08-09 107 views
-8

我想從一個列表中獲取一個特定項目的索引值。但函數返回值-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

該項目假設獲取索引是在列表 –

回答

1

IndexOf()正在返回的原因-1是因爲您試圖找到的項目不存在於列表中。

根據documentationIndexOf將返回「如果找到整個列表中第一次出現的項目的從零開始的索引;否則返回-1」。

您應該仔細檢查調試器,您會發現您試圖找到索引的項目不在您的清單中。

請記住(同樣,這是在文檔中)。 「這個方法使用默認的相等比較器EqualityComparer.Default來確定等於T,這是列表中值的類型。」所以,如果你確信你的項目應該在列表中,你應該看你的類型的EqualityComparer。

+0

我做了一個foreach循環來檢查這個項目是否存在。它確實存在於列表 –

+0

@NGZen閱讀我的最後一段。僅僅因爲你在調試器的列表中看到它,並不意味着你的類型的EqualityComparer發現它們是相等的。 – maccettura

+0

好的,我將通過使用Equals函數來檢查相等性。謝謝 –