``++Dispose++`` as a method name should be used exclusively to implement ``++IDisposable.Dispose++`` to prevent any confusion.


It may be tempting to create a ``++Dispose++`` method for other purposes, but doing so will result in confusion and likely lead to problems in production.


== Noncompliant Code Example

----
public class GarbageDisposal 
{
  private int Dispose()  // Noncompliant
  {
    // ...
  }
}
----


== Compliant Solution

----
public class GarbageDisposal : IDisposable
{
  public void Dispose() 
  {
    // ...
  }
}
----
or

----
public class GarbageDisposal 
{
  private int Grind()
  {
    // ...
  }
}
----


== Exceptions

Methods named ``++Dispose++`` and invoked from the ``++IDisposable.Dispose++`` implementation are not reported.

----
public class GarbageDisposal  :  IDisposable
{
  protected virtual void Dispose(bool disposing)
  {
    //...
  }
  public void Dispose() 
  {
    Dispose(true);
    GC.SuppressFinalize(this);
  }
}
----


ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
