根据条件填写清单

时间:2015-11-30 15:13:42

标签: c# list vector-graphics

是否有更快的方法根据像向量的距离这样的函数填充列表?

users_rights[14][22] = true;
users_rights[14][45] = false;

3 个答案:

答案 0 :(得分:2)

您可以使用Parallel.ForEach:

ConcurrentBag<Vector2> optionList = new ConcurrentBag<Vector2>();
Parallel.ForEach(specialBuildings, (item) => { optionList.Add(Vector2.Distance(item, house)); });

列表不是线程安全的,因此您需要使用Thread-Safe Collections之一。上面的例子使用了ConcurrentBag,但还有其他的。

答案 1 :(得分:1)

您可以尝试实施 PLinq Parallel Linq):

  List<float> optionList = specialBuildings
    .AsParallel()
    .Select(item => Vector2.Distance(item, house))
    .ToList();

答案 2 :(得分:0)

代码可能运行得不快,但您可以在一行中执行: return specialBuildings.Select(item => Vector2.Distance(item, house)).ToList()