Запускается ли блок «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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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