У меня очень странное поведение из-за этого метода:
public T NavigateTo<T>() where T : Page
{
SetPage<T>();
Console.Clear();
CurrentPage.Display();
return CurrentPage as T;
}
От: https://github.com/uta-org/EasyConsole/blob/master/EasyConsole/Program.cs#L106
Проблема в том, что когда достигается Console.Clear()
, я продолжаю выполнять (нажимая F10) область видимости просто выходит из метода.
Как видите, как только я нажимаю F10
(перешагнуть), консоль снова отображается (это означает, что выполнение точки останова завершено).
Почему это происходит? И что возвращает этот метод? Потому что я ожидал NullReferenceException
:
public MainPage(Program program)
: base("Main Page", program,
new Option("Fork Syncing (complete process)", () => program.NavigateTo<ForkSyncing>().DoLinking = null),
new Option("Fork Syncing (only cloning)", () => program.NavigateTo<ForkSyncing>().DoLinking = true),
new Option("Fork Syncing (only linking)", () => program.NavigateTo<ForkSyncing>().DoLinking = false),
new Option("Exit", () => Environment.Exit(0)))
{
}
От: https://github.com/uta-org/QuickFork/blob/eaf8f0a65af75e74015a1a1e168d98ad65d9e472/QuickFork.Shell/MainPage.cs#L21
Я делаю это по запросу автора в README. И как вы видите, я устанавливаю свойство DoLinking, и это не Nullable. (У меня ошибка в том, что DoLinking не подписан, поэтому мой рабочий процесс не выполняется должным образом).
Я испытываю это при сборке Debug и Release. Я на .NET 4.6.1.
EDIT:
Я не осознавал исключение Intelisense IOException. Но я включил переключение этого исключения в окне настроек исключений:
И код, предложенный ответом @timms:
Но это более странно, даже если выбрасывается любое исключение.