ShowDialog返回types:窗体与窗口

在WPF / .Net中, System.Windows.WindowSystem.Windows.Forms.Form都有.ShowDialog方法。

不同之处在于Windows.Window版本返回一个可为空的bool( bool?或者Nullable<bool> ),而Forms.Form版本则返回一个直的bool

我还没有看到可空的布尔永远是空的,并不能find它将在MSDN文档中的情况。

任何人都可以解释为什么Windows.Window.ShowDialog返回一个可为空? 我应该检查一下吗? 这是什么意思,如果我看到空?

看到这里: Window.DialogResult属性

当显示对话框但不接受也不取消时,DialogResult为空。

正如Kent Boogaart在回答一个非常类似的问题时所表明的那样

关闭窗口时,您会注意到对话框的DialogResult为false,而非对话框的DialogResult为null

因此, Windows.Window.ShowDialog返回一个空值,因为它使用DialogResult属性,当它不是一个对话框时它是null

为什么Windows.Window.ShowDialog返回一个空值?

我认为这只是一个随心所欲的选择。 如果我猜测,我会说,返回一个可空的布尔比创建另一个枚举返回结果更轻量级。 有三个可空布尔的状态,一个覆盖所有的基础。

ShowDialog返回窗口的DialogResult,这是一个Nullable。 当窗口打开时,DialogResult为空。 一旦DialogResult设置为true或false,ShowDialog将返回该结果。 由于窗口上的任何关闭操作都会隐式地将DialogResult设置为false,除非明确设置,否则可以安全地忽略由ShowDialog(DialogResult,另一方面,如果直接检查它可以为null)返回的空值。 就我所知,这只是完全匹配类型的结果。