错误无法从“System.Collections.Generic.List
本文关键字:List GameLibrary Cards Card Generic Collections System 错误 | 更新日期: 2023-09-27 18:37:22
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;
}
我在此行"列表 2、列表 3、列表 4"上收到错误。现在为什么我会收到此错误?这是现在发布的完整代码。也许现在你可以看到我想做什么。也使用它来检查列表中的匹配项。
List<List<Card>> cardMatches = this.GetCardMatchesInHand();
它试图做等效的事情:
List<Card> tmp = new List<Card>();
tmp.Add(list2);
tmp.Add(list3);
tmp.Add(list4);
List<Card> list4 = tmp;
现在,您无法使用元素类型的列表调用Add
- 这就是您收到该错误的原因。首次向list4
分配值时,您还尝试使用 list4
。
目前还不清楚您要实现的目标,但是如果您希望list4
成为list2
和list3
的所有元素,则可以使用:
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 };
您的整个 metho 此刻看起来有点混乱 - 您根本没有使用 list
变量,并且您声明list4
比使用它要早得多。这些都不是错误,但都有点奇怪。
本文关键字:List GameLibrary Cards Card Generic Collections System 错误 | 更新日期: 2023-09-27 18:37:22
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;
}
我在此行"列表 2、列表 3、列表 4"上收到错误。现在为什么我会收到此错误?这是现在发布的完整代码。也许现在你可以看到我想做什么。也使用它来检查列表中的匹配项。
List<List<Card>> cardMatches = this.GetCardMatchesInHand();
它试图做等效的事情:
List<Card> tmp = new List<Card>();
tmp.Add(list2);
tmp.Add(list3);
tmp.Add(list4);
List<Card> list4 = tmp;
现在,您无法使用元素类型的列表调用Add
- 这就是您收到该错误的原因。首次向list4
分配值时,您还尝试使用 list4
。
目前还不清楚您要实现的目标,但是如果您希望list4
成为list2
和list3
的所有元素,则可以使用:
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 };
您的整个 metho 此刻看起来有点混乱 - 您根本没有使用 list
变量,并且您声明list4
比使用它要早得多。这些都不是错误,但都有点奇怪。