Согласно отражателю .NET , Microsoft.Win32.OpenFileDialog.ShowDialog
реализован базовым классом Microsoft.Win32.CommonDialog
. Эта реализация имеет только одно возвращаемое предложение:
return new bool?(this.RunDialog(activeWindow));
RunDialog
возвращает bool
, а не bool?
.
bool?
это просто C # сокращение для System.Nullable<bool>
. Конструктор из System.Nullable<bool>
, опять же, согласно отражателю, устанавливает значение Nullable для его параметра и отмечает его свойство hasValue как true.
Итак ... вы никогда не должны получить null
результат. Быстрый тест подтверждает, что закрытие диалога без отмены (красная кнопка x) действительно возвращает значение false
, а не null
.
Версия OpenFileDialog для Windows Forms возвращает DialogResult, который имеет более широкий диапазон значений .