-3
   private List<List<Card>> GetCardMatchesInHand()
    {
        List<Card> list4;
        List<List<Card>> list = new List<List<Card>>();
        List<GameLibrary.Cards.Card> list2 = new List<GameLibrary.Cards.Card>()
        List<Card> list3 = new List<Card>();
        list4 = new List<Card> {
            list2,
            list3,
            list4
        };
        List<Card> list5 = this.Cards.ToList<Card>();
        using (List<Card>.Enumerator enumerator = this.Cards.GetEnumerator())
        {
            Predicate<Card> match = null;
            Predicate<Card> predicate2 = null;
            Predicate<Card> predicate3 = null;
            Predicate<Card> predicate4 = null;
            Predicate<Card> predicate5 = null;
            Card c;
            while (enumerator.MoveNext())
            {
                c = enumerator.Current;
                list5.Remove(c);
                if (match == null)
                {
                    match = element => element.CardValue == c.CardValue;
                }
                Card item = list5.Find(match);
                if (item != null)
                {
                    if (predicate2 == null)
                    {
                        predicate2 = element => element.CardValue == c.CardValue;
                    }
                    if (list2.Exists(predicate2))
                    {
                        if (predicate3 == null)
                        {
                            predicate3 = element => element.CardValue == c.CardValue;
                        }
                        item = list2.Find(predicate3);
                        list2.Remove(item);
                        list3.Add(c);
                    }
                    else
                    {
                        if (predicate4 == null)
                        {
                            predicate4 = element => element.CardValue == c.CardValue;
                        }
                        if (list3.Exists(predicate4))
                        {
                            if (predicate5 == null)
                            {
                                predicate5 = element => element.CardValue == c.CardValue;
                            }
                            item = list3.Find(predicate5);
                            list3.Remove(item);
                            list4.Add(c);
                        }
                        else
                        {
                            list2.Add(c);
                        }
                    }
                }
            }
        }
        return list;
    }

この行「list2、list3、list4」でエラーが発生しています。なぜこのエラーが発生するのですか? これは現在投稿されているコード全体です。多分今、あなたは私が何をしようとしているのかを見ることができます. また、これを使用して、リスト内の一致を確認します。

    List<List<Card>> cardMatches = this.GetCardMatchesInHand();
4

1 に答える 1

4

次と同等のことをしようとしています:

List<Card> tmp = new List<Card>();
tmp.Add(list2);
tmp.Add(list3);
tmp.Add(list4);
List<Card> list4 = tmp;

現在、要素タイプのリストAddを使用して呼び出すことはできません。これが、そのエラーが発生する理由です。初めて値を割り当てるときに使用しようとしています。list4list4

何を達成しようとしているのかは明確ではありませんが、 and のすべての要素になりたい場合は、list4次を使用できます。list2list3

List<Card> list4 = list2.Concat(list3).ToList();

list4または、本当にリストのリストになりたい場合は、そのように宣言し、適切なコンストラクターを呼び出す必要があります。

// Note not using list4 within the initializer...
List<List<Card>> list4 = new List<List<Card>> { list2, list3 };

現時点では、メソッド全体が少し混乱しているように見えます-変数をまったく使用しておらず、使用するよりもずっと前にlist宣言しています。list4どちらもエラーではありませんが、どちらも少し奇妙です。

于 2012-06-16T17:15:04.343 に答える