C# 是否可以在列表中调用公共方法而不进行迭代?

C# 是否可以在列表中调用公共方法而不进行迭代?,c#,linq,C#,Linq,我使用的是C#,我不知道是否有可能在同一时刻为列表中的所有对象调用一个方法,而不使用类似for或foreach的循环 前 班级人员 { 公共无效剂量测定法() { // } } 列表_personlist=新列表(); _personlist(选择all.doSomething())//像这样的 //对列表中的所有对象同时调用相同的方法 我认为Linq允许这样做,但目前我什么也找不到。无论如何,您都必须迭代列表 LINQ对于产生副作用并不是很有用,而是用于查询集合。您可以使用LINQ调用您的方

我使用的是C#,我不知道是否有可能在同一时刻为列表中的所有对象调用一个方法,而不使用类似for或foreach的循环

班级人员
{
公共无效剂量测定法()
{
//
}
}
列表_personlist=新列表();
_personlist(选择all.doSomething())//像这样的
//对列表中的所有对象同时调用相同的方法

我认为Linq允许这样做,但目前我什么也找不到。

无论如何,您都必须迭代列表

LINQ对于产生副作用并不是很有用,而是用于查询集合。您可以使用LINQ调用您的方法,但它会(在内部)进行迭代

因此,最好使用显式循环构造来清楚地传达代码意图

使用LINQ,如果您的对象有一个即时方法,则您可以:

var something = yourList.Select(r=> r.MethodToCall()).ToList();

但是不要做上面的事

LINQ确实提供了一种ForEach扩展方法,可以为您提供一个单行程序选项。但从技术上讲,这仍然是一个循环

这是我以前用过的一个例子

List<StreamWriter> Writers;
...
Writers.ForEach(x => x.Write(...));
列出编写者;
...
Writers.ForEach(x=>x.Write(…);

在列表对象上,可以调用扩展方法ForEach

IEnumerable<int> numbers = new List<int>() { 1, 2, 3 };
numbers.ForEach(x => Console.WriteLine(x));
IEnumerable numbers=new List(){1,2,3};
numbers.ForEach(x=>Console.WriteLine(x));

如果您想编写一个可以并行签出的查询

var\u personlist=new List();
_personlist.AsParallel().ForAll(i=>i.DoSomething());

是否要同时为列表中的所有对象调用函数?例如CheckPrice(产品列表中的所有对象)@MasterXD完全正确,没有循环,不可能一次完成所有操作。你必须进行某种迭代。如果您在继续向上提交逻辑之前只循环所有对象,这不会有任何区别。那么使用反射呢?例如,Method[].Invoke()我几乎没有使用反射的经验,但我也不知道如何使用反射。问题是,没有必要一次完成全部工作。你可以展示一些代码来说明为什么你需要它同时发生。是的。你必须循环浏览列表。你不能同时做很多事情。OP说你不能重复列表。您正在迭代列表。
IEnumerable<int> numbers = new List<int>() { 1, 2, 3 };
numbers.ForEach(x => Console.WriteLine(x));
var _personlist = new List<Person>();
_personlist.AsParallel().ForAll(i=>i.DoSomething());