繁体   English   中英

C# 优化调用方法并为列表中的每个项目返回其值

[英]C# optimization calling a method and returning its value for each item in the list

目前,我有一个要循环遍历的项目列表。 对于每个项目编号,我想调用另一个方法并将其值返回到另一个列表。 下面是我实现的代码:

List<SomeClass> lst = new List<SomeClass>();

foreach (var i in someList)
{
   lst.AddRange(obj.ReturnsAnEnumerableOf_MyClass(i.someId));
}

我不确定在AddRange方法中调用一个方法是否是一个好主意。 因此,我想使用如下代码行将其优化为更好的内容:

 var j = someList.ForEach(i => obj.ReturnsAnEnumerableOf_MyClass(i.someId));

但是,通过执行上面的一个线性代码,我得到以下错误:

不能将 void 分配给隐式类型的变量

.

如何优化上面的代码?

根据MSDN 页面, ForEach方法返回void 这就是你得到错误的原因。

如果要将上面的代码转换为单行代码,可以使用:

var j = someList.SelectMany(i => obj.ReturnsAnEnumerableOf_MyClass(i.someId)).ToList();

j将是一个List<T>实例,其中TReturnsAnEnumerableOf_MyClass返回的列表的类型。

此外,作为旁注,这里没有太多优化:性能方面,两种方式都应该花费相同的时间。 它更多的是对可读性的偏好。

性能应该是相同的,因为在两种方式中都执行相同数量的操作(即ReturnAsEnumerableOf_MyClass()乘以someList的长度的操作someList ),因此应该没有任何区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM