C# 如果不使用lambda表达式,这个Parallel.ForEach循环将如何完成?

C# 如果不使用lambda表达式,这个Parallel.ForEach循环将如何完成?,c#,lambda,delegates,C#,Lambda,Delegates,试图理解在C#中使用委托时没有lambda表达式会是什么样子。我理解它们的功能,但语法仍然模糊不清。如果不使用=>lambda快捷方式,这段代码会是什么样子 //pictureList is a string array of C:\Pictures\pic_1 through 10.jpeg file paths Parallel.ForEach(pictureList, currentPic => { string picName = Path.GetFileName(cur

试图理解在C#中使用委托时没有lambda表达式会是什么样子。我理解它们的功能,但语法仍然模糊不清。如果不使用=>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) {
    ...
}

另请注意,lambda代码包括加载和保存位图,因此请确保对此进行配置。与这么多I/O并行的好处可能是负面的。