【问题标题】:subtract one list from another in unity c#在统一 c# 中从另一个列表中减去一个列表
【发布时间】:2015-07-19 12:34:45
【问题描述】:

如何在统一 c# 中从 List "secondList" 中减去 List "firstList"。我已经找到了使用 LINQHashSet 的答案,但是在阅读了 thisthis 之后,我非常怀疑使用它们。请指出正确的方向,因为我必须在 IOS 和 Android 上部署我的游戏。

【问题讨论】:

  • 那么,您想保留第一个列表中不在第二个列表中的项目吗?列表中的对象是否有 ID?带有内部检查的简单 for 循环解决方案怎么样?你也可以给我们一些代码。
  • 我正在生成两个随机的字符串列表。假设首先我有 {"F", "G", "M", "T", "M", "F"},然后我有 {"F", "H", "G", "M ”、“Z”、“T”}。现在有了这两个,我想要第三个列表,它应该来自第二个列表中不存在于第一个列表中的额外字符。所以第三个列表应该只包含 {"H", "z"}。我生成的列表在每个列表中大约有 30 个字符,因此运行循环可能不会提高性能。
  • for (int i=0; i
  • 嗯,在我看来它应该可以工作了。
  • 好吧,由于性能问题,我不确定这是否是针对移动平台的优化编码方式。而且由于我的列表很大,我正在寻找另一种更有效的方式。

标签: c# android linq list unity3d


【解决方案1】:

“您链接到的帖子都在谈论不支持 LINQ 的 C#2.0”

这...可能并不完全相关,因为 C# 版本和 .NET 版本不一定是 1:1 匹配的。

也就是说,Unity(实际上是 Mono)绝对支持 LINQ。

不过,LINQ 基本上只是生成代码并将其隐藏起来,而实际的实现 (IL) 仍然很可能只是循环(over loops)。所以抛开语法糖不谈,问题在于哪个集合更大(如果您关心效率)并且可能将其用作外循环。

++运气;

【讨论】:

  • 我的第二个循环更大。是的,你是对的,统一支持 LINQ。公交列表排序在 IOS 上存在一些问题,通常会因错误而中断。他们正在帖子中谈论这个。
  • LINQ 并不总是最快/最有效的。取决于场景、.NET 版本等。
猜你喜欢
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多