Microsoft.Win32.OpenFileDialog.ShowDialog() 什么时候会返回 null?

10

OpenFileDialogShowDialog 方法返回一个可空布尔值,如果用户单击了“确定”则设置为 true,如果用户单击了“取消”则设置为 false。那么它什么时候会返回 null 呢?文档没有说明。


1
“好奇心”是一个非常好的回答,但我很想知道你为什么问这个问题?为什么不只是将其返回值与“true”进行比较(使用TryParse等)并继续前进呢? - lance
2
我只是好奇为什么他们使用可空布尔值而不是标准布尔值。与真进行比较可以正常工作,就像你建议的那样。 - sourcenouveau
现在你已经让我好奇了。希望会有人能提供一个好的答案! - lance
仅 WPF 的 ShowDialog() 方法返回可空布尔值而非 WinForms 的吗? - lance
3个回答

13

3
根据 .NET反编译器Microsoft.Win32.OpenFileDialog.ShowDialog 是由一个基类 Microsoft.Win32.CommonDialog 实现的。该实现仅有一个返回子句。
return new bool?(this.RunDialog(activeWindow));

RunDialog返回的是bool,而不是bool?

bool?只是System.Nullable<bool>C#简写。根据反射器的显示,System.Nullable<bool>构造函数将可空类型的值设置为其参数,并将其hasValue属性标记为true。

因此...您不应该得到null结果。快速测试确认,关闭对话框而不取消(红色x按钮)确实返回false值,而不是null

OpenFileDialog的Windows窗体版本返回一个DialogResult,其中包含更广泛的值范围


1

我的猜测是OpenFileDialog返回bool?以保持与其他实际可以返回空结果的WPF对话框一致。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接