Скажем, у меня есть следующий код:
    static void Fjuk(out string str)
    {
        str = "fjuk!";
        throw new Exception();
    }
    static void Main(string[] args)
    {
        string s = null;
        try
        {
            Fjuk(out s);
        }
        catch (Exception)
        {
            Console.WriteLine(s ?? "");
        }
    }
Когда я его тестирую, s был инициализирован на "fjuk!" когда он используется в блоке catch. 
Гарантируется ли это спецификацией или зависит от реализации? (Я искал спецификацию С# 3, но не смог узнать сам)
