Я не полагаю, что будет коллизия. Используя статический на уровне файла (вне функций) отмечает переменную как локальную для текущей единицы компиляции (файл). Это никогда не видимо вне текущего файла, поэтому никогда не должен иметь имя.
Используя статический в функции отличается - переменная только видима к функции, это - просто свое значение, сохраняется через вызовы к той функции.
В действительности, статичный делает две разных вещи в зависимости от того, где это. В oth случаях однако, это ограничивает видимость переменной для предотвращения столкновений пространства имен,
Однако я полагаю, что это было бы сохранено в ДАННЫХ, которые имеют тенденцию инициализировать переменную. BSS первоначально выдержан за byte-set-< что-то>, который содержал переменные, которые не были инициализированы.
Удаление потока закрывает его (и, вероятно, больше ничего не делает). поток очищает его и освобождает все ресурсы, связанные с потоком, например дескриптор файла. При очистке потока любые буферизованные данные, которые еще не были записаны, сразу же записываются; некоторые потоки используют внутреннюю буферизацию, чтобы избежать тонны небольших обновлений относительно дорогих ресурсов, таких как файл на диске или сетевой канал.
Вам необходимо вызвать либо Close
, либо Dispose
на большинство потоков, или ваш код неверен, потому что основной ресурс выиграл они должны быть освобождены для использования кем-то другим до тех пор, пока не появится сборщик мусора (кто знает, сколько времени это займет.) Dispose
является само собой разумеющимся; ожидается, что вы избавитесь от всех одноразовых вещей на C #. Вероятно, вам не нужно явно вызывать Flush
в большинстве сценариев.
В C # идиоматично вызывать Dispose
посредством блока using
, который является синтаксическим сахаром для блока try-finally, который удаляется в finally, например:
using (FileStream stream = new FileStream(path))
{
// ...
}
функционально идентичен
FileStream stream;
try
{
stream = new FileStream(path);
// ...
}
finally
{
if (stream != null)
stream.Dispose();
}