GC.Collect () não coletando imediatamente?

No decorrer de uma discussão no chat, eu escrevi este aplicativo de console.

Código:
using System;

class Program
{
    static void Main(string[] args)
    {
        CreateClass();
        Console.Write("Collecting... ");
        GC.Collect();
        Console.WriteLine("Done");
    }

    static void CreateClass()
    {
        SomeClass c = new SomeClass();
    }
}

class SomeClass
{
    ~SomeClass()
    {
        throw new Exception();
    }
}
Resultado:
Collecting... Done

Unhandled Exception: System.Exception: Exception of type 'System.Exception' was
thrown.
   at SomeClass.Finalize()

Eu teria esperado que o aplicativo travasseantes Done foi impresso.

Eu não me importo muito sobre como fazer isso. Minha pergunta é,porque não faz isso?

questionAnswers(4)

yourAnswerToTheQuestion