Finalizers come with a performance cost due to the overhead of tracking the life cycle of objects. An empty one is consequently costly with no benefit or justification.

Noncompliant Code Example

public class Foo
{
    ~Foo() // Noncompliant
    {
    }
}