``++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);
  }
}
----
