2017-08-09 10 views
-8

1つの特定の項目のインデックス値を1つのリストから取得しようとしています。しかし、関数は値-1を返しました。 indexof return -1の理由を知ることができますか?C#戻り値のインデックス-1

+0

これは、アイテムがリストにない場合に発生します。 – praveen

+5

[documentation](https://msdn.microsoft.com/en-us/library/e4w08k17(v = vs.110).aspx)を読んだことがありますか?具体的にそれが言う一部:「[戻り値] List全体内の項目の最初に見つかった位置のインデックス、見つかった場合は、**そうでない場合、-1 **。」 – maccettura

+0

項目がインデックスを取得すると仮定リスト内にある –

答えて

1

理由IndexOf()を検索しようとしている項目がリストに存在しないため、-1を返す理由です。

documentationによると、IndexOfは、 "見つかった場合は、リスト全体のitemの最初の出現の0から始まるインデックス、それ以外の場合は-1を返します。"

デバッガをステップバイステップで実行すると、というインデックスを検索しようとしているアイテムがリストにないとわかります

注意してください(また、これはドキュメントにあります)。これは、 "このメソッドは、Tのデフォルトの等価比較子EqualityComparer.Default(リストの値の型)を使用して、等価性を判定します。"あなたの商品がであると確信している場合は、をリストに入れてください。あなたのタイプのEqualityComparerを見てください。

+0

この項目が存在するかどうかを確認するためにforeachループを実行しました。それはリストに存在します –

+0

@NgZen最後の段落を読んでください。デバッガのリストに表示されているからといって、あなたのタイプのEqualityComparerが等しいと判断するわけではありません。 – maccettura

+0

私はEquals関数を使って等値をチェックします。ありがとう –