Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# lambda和人口之间的差异?_C#_Lambda - Fatal编程技术网

C# lambda和人口之间的差异?

C# lambda和人口之间的差异?,c#,lambda,C#,Lambda,我使用的库(Mvc.Mailer)让我们编写如下代码 return Populate(x => { x.ViewName = "Welcome"; recipients.ForEach(r => x.To.Add(r)); }); 我开始怀疑这是否仅仅是一种设计选择,或者上面的lambda版本是否比下面的代码具有更好的功能/性能 var populatedObject = new ObjectToPopulate(); populatedObject.ViewNa

我使用的库(
Mvc.Mailer
)让我们编写如下代码

return Populate(x =>
{
    x.ViewName = "Welcome";
    recipients.ForEach(r => x.To.Add(r));
});
我开始怀疑这是否仅仅是一种设计选择,或者上面的lambda版本是否比下面的代码具有更好的功能/性能

var populatedObject = new ObjectToPopulate();

populatedObject.ViewName = "Welcome";
recipients.ForEach(r => populatedObject.To.Add(r));

return populatedObject;

这种差异是纯粹的语法上的还是超出了简单的书写偏好?

如果
填充
函数只是调用lambda表达式,则没有什么区别-这只是一个方便/语法的问题


查看您的特定示例-
Mvc.Mailer
似乎在
Populate
中有一些额外的管道(即
PopulateBody
方法),因此在您的情况下,结果可能会有所不同。

好吧,这只是首选项,这两种方法都将创建一个对象并进行填充,但由于内存引用等原因,我觉得第一个问题可能会快一点。在考虑性能时,您应该使用探查器并测量准确的差异,因为它将高度依赖于您的本地环境(CPU、内存等)。除此之外,我们无法解决您的问题,因为我们不知道
填充
的功能。我假设它将包装委托并添加一些在第二个示例中不会执行的行为。在问了这个问题后,我反编译了populate方法,发现发生的不仅仅是简单的赋值,也许我不应该给出一个库的精确示例来避免这个问题。谢谢你的回答。