- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
using (var stream = File.Open(inFile, FileMode.Open))
using (var reader = new StreamReader(stream))
using (var csvReader = new CsvReader(reader, new Configuration
{
HeaderValidated = HeaderValidated,
MissingFieldFound = null,
PrepareHeaderForMatch = header =>
CultureInfo.CurrentCulture.TextInfo.ToTitleCase(header)
}))
using (var outStream = File.Open(outFile, FileMode.CreateNew, FileAccess.Write, FileShare.Read))
using (var writer = new StreamWriter(outStream))
using (var csvWriter = new CsvWriter(writer))
pedikulez 27.04.2018 07:23 # 0
Steve_Brown 27.04.2018 11:07 # −1
(разве что в самом языке, %username%, - в плюсах можно было бы просто завести локальную переменную, а тут нужно не забыть using - напишешь просто new и будет непонятное поведение...)
pedikulez 27.04.2018 12:16 # −2
roskomgovno 27.04.2018 23:17 # +1
GC собирает свой урожай глупости: приходится платить за право не думать про управление памятью
Steve_Brown 28.04.2018 11:26 # +2
C++:
C#:
ЗАТО НЕТ ЭТИХ ДУРАЦКИХ ЗВЕЗДОЧЕК А ТО УКАЗАТЕЛИ ЭТО СЛОЖНА Я ИХ НЕ ПОНИМАЮ
mazhuravlev 28.04.2018 14:55 # +1
Объект-то разрушен будет, а ресурсы не освободит, если это не происходит в деструкторе, а нужно, например, вызвать метод вроде Dispose у IDisposable. Тут речь не про GC, он в любом случае все соберет, а про управление ресурсами.
yet_another_one_shit 28.04.2018 15:04 # 0
mazhuravlev 28.04.2018 16:09 # 0
roskomgovno 29.04.2018 01:25 # 0
Она может кончиться через 5 лет или через 200 лет. Десктрутор может не вызваться никогда
bormand 29.04.2018 13:33 # 0
Там вроде по таймеру GC запускается как раз для таких случаев.
roskomgovno 29.04.2018 18:52 # +2
bormand 01.05.2018 10:40 # 0
bormand 29.04.2018 13:33 # +1
Из-за исключений в крестах сложно контролить вызов всех этих close() — заебёшься try расставлять да руками каскадить для полей. Поэтому все вменяемые классы соблюдают RAII и в десктрукторе освобождают ресурсы.
А вот в джаве и шарпе до сих пор руками солнце закатывают (using спасает далеко не во всех случаях). Плата за недетерминированность GC.
syoma 29.04.2018 23:29 # 0
Просвятишь?
bormand 30.04.2018 03:59 # 0
syoma 30.04.2018 07:12 # 0
bormand 30.04.2018 07:16 # 0
Alexander 30.04.2018 22:13 # 0
Alexander 30.04.2018 22:13 # 0
Alexander 30.04.2018 22:13 # 0
Alexander 30.04.2018 22:13 # +1
roskomgovno 01.05.2018 01:51 # 0
bormand 01.05.2018 10:41 # 0
Ну GC таки крут -- для других объектов этот dispose дёргать не надо. Да и мелкие временные объекты быстро зачищает.
roskomgovno 01.05.2018 16:48 # 0
Но вот невозможность быстро и гарантированно что-то очистить действительно напрягает и заставляет делать такие костыли как IDisposable. Это не только .NEt, я и в проектах на Java такое видал
roman-kashitsyn 01.05.2018 12:10 # +3
Вы там как, односвязные списки без переполнения стека уже научились освобождать?
gost 01.05.2018 12:34 # 0
roskomgovno 01.05.2018 16:46 # 0
На самом деле мне нужно было писать зеленым, потому что у меня нет strong opinion на этот счет
Desktop 01.05.2018 23:11 # 0
roman-kashitsyn 01.05.2018 23:51 # +4
http://govnokod.ru/19104
В плюсах аналогичную проблему легко сделать явно: Если сделать длинный-длинный (зависит от размера стека, у нас в проде это несколько килобайт) список, то деструктор порвёт стек.
subaru 01.05.2018 23:56 # 0
bormand 02.05.2018 10:02 # +2
Desktop 02.05.2018 11:17 # 0
dm_fomenok 01.05.2018 20:00 # 0
subaru 01.05.2018 20:21 # 0
subaru 01.05.2018 20:24 # 0
Страйкир получает все коменты себе на почту? Или это адрес dm_fomenok'а? Или это адрес ОПа?
pedikulez 01.05.2018 20:38 # +2
>>>"The following From address failed: [email protected] "
>>>"From address"
>>>"From"
>>>"From"
>>>"From"
>>>"From"
>>>"From"
subaru 01.05.2018 20:55 # 0
gost 02.05.2018 11:22 # 0
Может, он любит обмазываться свежими комментами и читать?
dm_fomenok 04.05.2018 11:48 # 0
syoma 29.04.2018 21:25 # 0
pedikulez 29.04.2018 22:04 # 0
syoma 29.04.2018 23:29 # 0
yet_another_one_shit 30.04.2018 22:16 # +1