在WPF / .Net中,System.Windows.Window
和System.Windows.Forms.Form
都有.ShowDialog
方法。
区别在于Windows.Window
版本返回可以为空的bool(bool?
或Nullable<bool>
),而Forms.Form
版本返回直线bool
。< / p>
我还没有看到可空的bool永远是null,并且找不到它将在MSDN文档中的情况。
有谁可以解释为什么Windows.Window.ShowDialog
返回可空?我应该检查一下吗?如果我看到null是什么意思?
答案 0 :(得分:2)
见这里:Window.DialogResult Property
当显示对话框但未接受或取消时,DialogResult为空。
答案 1 :(得分:1)
正如Kent Boogaart在his answer中演示了一个非常相似的问题
关闭窗户时,你会 注意对话框有一个 DialogResult的错误,而 非对话框有一个空的DialogResult
所以Windows.Window.ShowDialog
返回一个可空的因为它使用DialogResult属性,当它不是一个对话框时为null
答案 2 :(得分:0)
Windows.Window.ShowDialog返回的原因 可空的?
我认为这只是一个随意的实施选择。如果我猜测,我会说返回一个可空的bool比创建另一个枚举返回结果要轻一些。可空布尔值有三种状态,涵盖所有基数。
答案 3 :(得分:0)
ShowDialog返回窗口的DialogResult,它是一个Nullable。窗口打开时,DialogResult为空。一旦DialogResult设置为true或false,ShowDialog将返回该结果。由于窗口上的任何关闭操作都会隐式将DialogResult设置为false,除非显式设置,是的,您可以安全地忽略ShowDialog返回的空值(另一方面,如果直接检查,则DialogResult可以为null)。据我所知,这只是完全匹配类型的结果。