2015-04-23 52 views
0

我有这3个列表。通过更改其所有元素来更新列表

public List<Rectangle> CoTree; 
public List<Rectangle> CoRock; 
public List<Rectangle> PlayerBlock = new List<Rectangle>(); 

在更新方法,我想改变这两个列表(CoTreeCoRock)的所有元素,并把两个列表中PlayerBlock双床,这样它会改变所有元素PlayerBlock

CoTree=tree.HitBox.FindAll(item => item.Intersects(player.HitBox)); 
CoRock=rock.HitBox.FindAll(item => item.Intersects(player.HitBox)); 

// what I need is PlayerBlock = CoTree+CoRock; 

回答

0

您应该使用Concat方法。

您应该使用CoTree.Concat(CoRock)然后ToList()转换到一个列表

2

我不知道,如果一个项目可以在这两个CoTreeCoRock发生。如果可以,你应该使用Union,获取列表中包含的每一个元素只有一次:

PlayerBlock = CoTree.Union(CoRock).ToList(); 

您可以使用Concat,如果它是没有问题的一个元素PlayerBlock出现了两次:

PlayerBlock = CoTree.Concat(CoRock).ToList(); 
+2

值得一提的是,如果类覆盖了'Equals' +'GetHashCode'或者您提供了'IEqualityComparer ','Union'只能按预期工作。但如果它实际上是'System.Drawing.Rectangle',它已经有意义地覆盖了这些方法。 –

+0

弗洛伊德滑:_“这是值得的东西”_ - > _“值得注意的是_ –

相关问题