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方法,发现发生的不仅仅是简单的赋值,也许我不应该给出一个库的精确示例来避免这个问题。谢谢你的回答。