Я использую «оператор использования», чтобы убедиться, что StreamWriter очищается должным образом.
using (StreamWriter fout = new StreamWriter(tempFile))
{
data.ForEach(line => fout?.WriteLine(line));
}
Я получаю предупреждение ReSharper «Доступ к удаленному закрытию», которое, насколько я понимаю, связано с тем, что переменная fout
может быть закрыта. Я понимаю, что в некоторых случаях это могло произойти, но в этом случае возможно ли удаление fout
при вызове WriteLine
?
ForEach
делает внутри с данным делегатом. И я, и вы знаете, что этого не произойдет, но компилятор не может быть уверен, отсюда и предупреждение. - person Alejandro   schedule 25.01.2019ForEach
, имеет закрытие, которое включает переменную, которая будет удалена с помощью метода Using. Если ForEach кэширует делегата, он получит доступ кfout
после того, как он, возможно, был удален. Прочтите полностью resharper-support.jetbrains.com/hc/en-us/community/posts/. Последний пост (я думаю, от парня из Resharper) в основном объясняет это - person Flydog57   schedule 25.01.2019