Dispose objects at most once

Metadata

ID: csharp-best-practices/dispose-objects-once

Language: C#

Severity: Info

Category: Best Practices

Description

From the documentation, the dispose() method should be called only once. Additional calls do not have any impact other than potential performance overhead.

Non-Compliant Code Examples

using System.Net;

class MyClass {
    public static void routine()
    {
        Disposable myObject;

        myObject.dispose();
        foo.bar();
        myObject.dispose();
    }
}
using System.Net;

class MyClass {
    public static void routine()
    {
        Disposable myObject;

        myObject.dispose();
        foo.bar();
        if(foo) {
            myObject.dispose();
        }
        
    }
}

Compliant Code Examples

class MyClass {
    public static void routine()
    {
        Disposable myObject;

        myObject.dispose();
    }
}