Тип возвращаемого значения ShowDialog: Форма против Окна - PullRequest
3 голосов
/ 09 февраля 2011

В WPF / .Net и System.Windows.Window, и System.Windows.Forms.Form имеют метод .ShowDialog.

Разница в том, что версия Windows.Window возвращает допускаемое значение bool (bool? или * 1008)*), в то время как версия Forms.Form возвращает прямое bool.

Я еще не видел, чтобы nullable bool когда-либо имел значение null, и не могу найти случай, где это было бы в документации MSDN.

Может кто-нибудь объяснить, почему Windows.Window.ShowDialog возвращает значение Nullable?Должен ли я проверить это?Что это значит, если я вижу ноль?

Ответы [ 4 ]

2 голосов
/ 09 февраля 2011

см. Здесь: Свойство Window.DialogResult

DialogResult имеет значение null, когда диалоговое окно отображается, но не принимается и не отменяется.

1 голос
/ 09 февраля 2011

Как Кент Бугаарт демонстрирует в свой ответ на очень похожий вопрос

Когда вы закрываете окна, вы заметите, что диалог имеет DialogResult со значением false, ане диалоговое окно имеет нулевой DialogResult

Так что Windows.Window.ShowDialog возвращает значение NULL, поскольку оно использует свойство DialogResult, которое является нулевым, если оно не является диалоговым

0 голосов
/ 09 февраля 2011

ShowDialog возвращает DialogResult окна, который может иметь значение Nullable.Пока окно открыто, DialogResult имеет значение null.Если для DialogResult установлено значение true или false, ShowDialog вернет этот результат.Поскольку любая операция закрытия в окне неявно установит для DialogResult значение false, если оно не установлено явно, да, вы можете безопасно игнорировать нулевые значения, возвращаемые ShowDialog (DialogResult, с другой стороны, может быть нулевым, если вы проверите его напрямую).Насколько я знаю, это просто результат точного соответствия типов.

0 голосов
/ 09 февраля 2011

почему Windows.Window.ShowDialog возвращает значение Nullable?

Я думаю, что это был просто произвольный выбор реализации.Если бы я догадался, я бы сказал, что возвращение недействительного bool немного легче, чем создание другого перечисления для возврата результата.Существует три состояния для логического значения, допускающего значение NULL, которое охватывает все базы.

...