Использование неназначенной локальной переменной. Но всегда попадает в присвоение

имея этот код, я не понимаю, почему, если присвоение переменной в блоке finally не понимает, она ВСЕГДА будет назначена. Думаю, мне не хватает действующего варианта, при котором валюта не будет назначена. Если вы знаете, будет здорово понять, почему. очень ценю это!

Спасибо!

CurrencyVO currency;

try
{
     if (idConnection.HasValue && idConnection != 0)
     {
         currencyConnection = client.GetConnection(idConnection.Value);
         model.Connection = currencyConnection;
     }
     else 
     {
         int providerUserKey = (int)Models.UserModel.GetUser().ProviderUserKey;
         currencyConnection = client.GetConnection(providerUserKey);
     }                        
     currency = model.Currencies.SingleOrDefault(c => c.IdCountry == currencyConnection.idcountry) ?? new CurrencyVO();    
} 
catch
{
      currency = new CurrencyVO();                    
} 
finally
{
      model.PublishedContainer.Currency = currency;
}

ошибка происходит в блоке finally. Если я возьму его из блока finally следующим образом:

                } catch {
                    currency = new CurrencyVO();
                }
                model.PublishedContainer.Currency = currency;

, он будет работать нормально.

5
задан Enigma State 22 December 2011 в 00:08
поделиться