Я смущаюсь обо всех этих разговорах о IDispose и «использовании» заявлений. Интересно, если кто-то может сказать мне, если мне нужно использовать либо «используя» заявление или какое-то реализация IDispose в следующем примере теста ...Когда нужно утилизировать?
public class Main()
{
MyFile myFile = new MyFile("c:\subdir\subdir2\testFile.txt");
Console.Writeline("File Name: " + myFile.FileName() + "File Size: " + myFile.FileSize());
}
public class MyFile
{
private FileInfo _fInfo;
public MyFile(string fullFilePath)
{
_fInfo = new FileInfo(fullFilePath);
}
public string FileName()
{
return _fInfo.Name;
}
public long FileSize()
{
return _fInfo.Length;
}
}
Прежде всего, в C# .NET вы никогда не можете быть уверены, что у вас есть любой объект. GC делает это для вас. Вы можете хотя сказать немного вещей в Destructor, но все же он не освободит память по вашей воле. Во-вторых, использование оператора более чисто, чем создание кода и реализация IDisposable или создание одноразовых методов. По мере того, как объем использования инструкции заканчивается, все переменные, определенные и инициализированные внутри, будут убиты. –
@ АнубхавСайни: это ложь. GC не распоряжается для вас, и вы всегда можете быть уверены, что выбрали, если вы вызываете Dispose. –
GC собирает. Утилизация распоряжается. Вызов метода Dispose гарантирует, что вы выбрали. Когда он устраивается, ни один организм не знает. Все еще время выполнения уничтожает объекты. В большинстве случаев используйте инструкцию Using и пытайтесь писать безопасные исключения. @JohnSaunders благодарит. –