试图了解在没有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/

10-10 08:03