在WPF / .Net中, System.Windows.Window
和System.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)返回的空值。 就我所知,这只是完全匹配类型的结果。