Всем определениям, данным здесь (в то время, когда я записал это, мы получили лучшие ответы с тех пор), не удается обратиться к одному промежуточному случаю:
у Вас есть одиночный элемент, который выделяет память после создания, и эта память обычно сохранена, пока программа работает даже при том, что текущее использование сделано, и это неизвестно, будет ли какое-либо будущее использование когда-либо делаться или нет. Это обычно делается из-за издержек воссоздания его.
"сбоем к свободному, когда сделано с ним" стандарт это считали бы утечкой, и я видел, что инструменты создания отчетов утечки называют такие вещи утечками, поскольку память все еще использовалась. (И на самом деле код не может содержать код, способный к чистке объекта.)
Однако я встретился с кодом этой природы в библиотеках компилятора прежде, даже когда стоимость воссоздания объекта не весь настолько большая.
Утечка или нет?
Я думаю, это потому, что вы нацелены на фреймворк до c # 4.0. Попробуйте перейти к свойствам ваших проектов и установить целевую платформу на 4.0
Вы должны убедиться, что вы строите свой сервис для .NET 3.5 или выше. Ключевое слово var ранее не поддерживалось.
Может быть, вы случайно позвонили csc.exe
из каталога, которого не ожидали? Я решил проблему, запустив csc.exe
используя полный путь:
set csc=c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
%csc% try.cs
rem This was wrong:
set path=%path%;c:\Windows\Microsoft.NET\Framework\v4.0.30319
csc.exe
rem This shows csc version, which turned out to be from Framework 2.0.