Есть ли способ управлять потоком программы в C# из функции?C# Помещение «Возврат» в функцию?
Я имею в виду C++ можно было разместить что-то вроде
#define Verify(x) if(x==null) return;
или
#define Verify(x) if(x==null) goto _exit;
в макро и место Проверьте (х) где-нибудь в функцию. В этом примере макрос может выйти из функции, если выполнено какое-либо условие. Но в C#, вы можете поместить проверки в функцию, то функция может быть встраиваемыми, но вы всегда должны написать что-то в виде
if (Verify(x)) return;
. Итак, вопрос в том, есть ли какой-либо иной способ, кроме исключений, манипулировать потоком управления вызывающей функцией как вызываемой функции?
Я сильно не нравлюсь видя инструкции потока управления в макросах или иным образом скрытые. Не делай этого. Исключения - это путь. –
Но исключение приходится много накладных расходов. –
Что значит накладные расходы? Исключения не используются для управления потоком, но для указания состояния ошибки, за пределами которого нет возможности выполнить функцию. Вы не бросаете исключения только для того, чтобы переместить выполнение где-то еще. –