请考虑以下代码:
private ISet<int> CalcSumsOfTwoNums(IEnumerable<int> nums) {
ISet<int> iset = new HashSet<int>();
var asArray = nums.ToArray();
for (var i = 0; i < asArray.Length - 2; i++) {
for (var j = i; j < asArray.Length - 1; j++) {
var sum = asArray[i] + asArray[j];
if (sum <= MAX) {
iset.Add(sum);
}
}
}
return iset;
}
将嵌套的 for
循环语法转换为 LINQ 表达式或 LINQ 点记号,这是否有意义?这是其中一种情况,for
循环语法更合适吗?我的倾向是说,在这里使用 for
循环更好,因为我依赖于数组的索引位置,通过它来获取结果集。
for
循环语法中,保存数组索引的i
和j
变量是计算总和的关键,而我不知道如何将其转换为LINQ语法。nums
中的值可以是任意的,例如1到10。我返回一个ISet
而不是一个IEnumerable
,以确保返回的值是唯一的。 - λ Jonas Gorauskas