... если я использую IDisposable в локальной переменной, но не звоню, Располагают () или используют использование () шаблон.
public void BadMethod()
{
var fs = new FileStream("file.txt", FileMode.Create);
fs.WriteByte(0x55);
// no dispose, no using()
}
Точно так же, как "Типы, которые владеют доступными полями, должны быть доступным" правилом для полей.
Править: Замененные MemoryStream FileStream, потому что MemoryStream просто выделяет память и не использует (неуправляемые) ресурсы, таким образом, кто-то мог обсудить об обязательном, Располагают () вызов.
Есть ли для этого правило FxCop? И да и нет.
В FxCop 1.35, на котором основан анализ кода Visual Studio 2005, существовало правило DisposeObjectsBeforeLosingScope , которое делало именно это.
В FxCop 1.36 (анализ кода Visual Studio 2008) они удалили свой механизм анализа потока данных, что означало, что это правило также пришлось удалить.
Однако в следующем FxCop ( Visual Studio 2010 Code Analysis) кажется, что DisposeObjectsBeforeLosingScope вернулся!