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();
        if(foo) {
            something.dispose();
        } else {
            myObject.dispose();
        }
        
    }
}
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();
    }
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis