0

次の方法でリストからアイテムを削除しようとすると、それができないという問題があります...なぜそれはエラーが「割り当てられていないローカル変数の使用」であり、以下に示すように割り当てられているかです:

  public void RemoveFrmList(int ProdId)
        {
            int _index;
            foreach (Products item in BoughtItems)
            {
                if (item.ProductID == ProdId)
                {
                   _index = BoughtItems.IndexOf(item);
                }

            }
            BoughtItems.RemoveAt(_index);
        }

このエラーを取り除くために何ができますか?

4

3 に答える 3

2

ifステートメント内のコードは必ずしも発生しません。_indexを-1または値を示す「見つかりません」に初期化すると、エラーが解消されます。

于 2012-06-11T19:25:59.150 に答える
2

BoughtItemsですか?RemoveAllList<T>を使用するだけの場合

public void RemoveFrmList(int ProdId)
{
    BoughtItems.RemoveAll( item => item.ProductID == ProdId );
}

少しオフトピックですが、RemoveFrmLisにoがないのはなぜですか?読みやすさが損なわれるだけです。完全な単語を使用してください。

于 2012-06-11T19:26:59.080 に答える
1

_indexループに入るまで割り当てられません。しかし、アイテムBoughtItemsがない場合は、割り当てられていないProductvariable があります_index。または、 でアイテムを取得できない場合もありますitem.ProductID == ProdID

言い換えれば:

int _index;
foreach (Products item in BoughtItems)
{
   //Code here is not executed during runtime for reasons stated above.
}
BoughtItems.RemoveAt(_index); //error here because _index was not assigned!

それを修正するには、次のようなことができます

int _index = -1;
foreach (...)
{
   //...
}
if (_index != -1){
   BoughtItems.RemoveAt(_index);
}
else
{
  //handle case if needed
}
于 2012-06-11T19:23:49.383 に答える