Запускается ли блок «finally» при возврате внутрь try, и что произойдет, если «finally» тоже вернется?C#

Место общения программистов C#
Anonymous
Запускается ли блок «finally» при возврате внутрь try, и что произойдет, если «finally» тоже вернется?

Сообщение Anonymous »

У меня вопрос, как попробовать/ ведет себя при использовании операторов return в C#.
Рассмотрите следующие методы:

Код: Выделить всё

public int Test()
{
return 12;
}

public int Test2()
{
try
{
return 12;
}
finally
{
Console.WriteLine("Test");
}
}
Вопрос 1:
При вызове Test2() будет ли выполняться Console.WriteLine внутри блокаfinally, даже если метод уже достигает возврата внутри try?

Теперь рассмотрим эту версию:

Код: Выделить всё

public int Test2()
{
try
{
return 12;
}
finally
{
return 23;
}
}
Вопрос 2:
Если и try, и наконец содержат оператор return, какое значение фактически возвращается? Переопределяет ли возврат внутри блокаfinally возвращаемое значение из блока try?

Что я ожидаю понять:
  • Точный порядок выполнения при возврате внутри try
  • Всегда ли выполняется блокfinally
  • (мой главный вопрос) Каково окончательное возвращаемое значение, когда оба блока содержат return
Заранее спасибо!>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -if-finall

Вернуться в «C#»