试图了解在没有Lambda表达式的情况下在C#中使用委托的含义。我了解它们的功能,但语法仍然模糊。不使用=> lambda快捷方式,这段代码是什么样的?
//pictureList is a string array of C:\Pictures\pic_1 through 10.jpeg file paths
Parallel.ForEach(pictureList, currentPic =>
{
string picName = Path.GetFileName(currentPic);
using (Bitmap bitmap = new Bitmap(currentPic))
{
bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
bitmap.Save(Path.Combine(newDir, picName));
}
}
);
最佳答案
Lambda不是“捷径”,而是一种“内联”生成委托对象的方法(即,无需定义单独的方法)。
您可以使用内联产生委托的旧方法(即匿名方法),如下所示
Parallel.ForEach(pictureList, delegate(Image currentPic) {
...
});
或为其定义单独的方法,如下所示:
Parallel.ForEach(pictureList, ProcessPicture);
...
static void ProcessPicture(Image currentPic) {
...
}
关于c# - 不使用lambda表达式如何完成Parallel.ForEach循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39306028/