Когда избавляться? - PullRequest
       38

Когда избавляться?

8 голосов
/ 20 марта 2012

Я запутался во всех этих разговорах об IDispose и «использовании» операторов. Интересно, может ли кто-нибудь сказать мне, нужно ли мне использовать выражение «using» или какую-то реализацию 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;
    }

}

Ответы [ 4 ]

21 голосов
/ 20 марта 2012

Нет, в вашем примере не используются никакие ресурсы, которые нужно утилизировать (он не касается ничего, что реализует IDisposable, или не имеет прямых указателей для неуправляемых ресурсов), поэтому вам не нужно реализовывать IDisposable.

Теперь, если вы изменили свой класс на , откройте файл и сохраните поле FileStream, относящееся к дескриптору открытого файла, , тогда имеет смысл реализоватьIDisposable чтобы закрыть поток.

7 голосов
/ 20 марта 2012

Нет, в предоставленном коде я не вижу ни одного использованного ресурса, который должен быть утилизирован.Поэтому ответ нет , не используйте в этот код it.

6 голосов
/ 20 марта 2012

В вашем примере нечего распоряжаться, поэтому вам не нужно этого делать.
Если вы хотите читать / записывать в файл, вы можете использовать для этого Streamreader / Streamwriter, и таким образом вам придется утилизировать эти объекты после их использования.

using(StreamReader sreader=new StreamReader())
{
//your code
}

Так что в этом случае использование оператора поможет вам не думать о ручном удалении / закрытии вашего объекта /

4 голосов
/ 20 марта 2012

В вашем коде нет необходимости в Dispose / using - для полного руководства по IDisposable см. здесь .

...