给出以下代码段:
string body = "blabla";
/* some processing */
itinerary.Propositions.Each(prop =>
{
/* some processing */
body += "looking good";
/* some more processing */
});
Resharper抛出“在本地关闭时访问”错误。现在,我已经阅读了很多有关此的内容,但到目前为止,还没有一种避免在这种情况下出错的方法。
那么...如何在没有警告的情况下仍然使用可变主体?
答案 0 :(得分:0)
好吧,您正在修改在lambda之外声明的lambda中的变量,这是一个警告。因此,要么忽略警告,要么不要在lambda中修改警告。如果您了解为什么这是一个警告,那么您将更容易知道应该是否忽略该警告。
如何在没有警告的情况下仍然使用可变主体?
仅使用foreach
?
foreach (var prop in itinerary.Propositions)
{
/* some processing */
body += "looking good";
/* some more processing */
}
答案 1 :(得分:0)
如果正在构建字符串,则使用+=
的循环不是最佳的。它创建了许多新的不可变实例进行垃圾回收,并且可以用更漂亮的方式进行重写。
也许:
string body = "blabla" + string.Concat(itinerary.Propositions
.Select(prop => { /* some processing */ return "looking good"; })
);
如果需要分隔符,请使用string.Join
而不是string.Concat
。
答案 2 :(得分:0)