Generally finalize( ) and dispose( ) method is used for releasing  the unmanaged  resources like files, database connections, etc. But the main difference is that dispose( ) method is invoked( called) by the user and finalize(  )   method is invoked( called) by the garbage collector before the object is destroyed.  dispose( ) method is declared as public, but finalize( ) method is declared as private and at the runtime when the destructor is called it  automatically Converted to Finalize method
.
Example of dispose ( ) method
{
// dispose  method declare 
{
Dispose( true);
GC. SuppressFinalize( this);
}
{
{
{
// clean  the managed objects
}
// clean  the unmanaged  objects
}
}
}
Example of finalize( ) method
{
//Implement IDisposable.
{
Dispose( true);
GC. SuppressFinalize( this);
}
{
{
{
//  clean  the managed objects
}
//  clean  the unmanaged  objects
}
}
//At runtime C# destructor is automatically Converted to Finalize method
~Test( )
{
Dispose( false);
}
}