gpt4 book ai didi

c# - 检查 OpenFileDialog 的可空结果

转载 作者:太空狗 更新时间:2023-10-30 00:52:50 29 4
gpt4 key购买 nike

我在 WPF 应用程序中编写了一些代码,如下所示:

var dialog = new OpenFileDialog { Filter = this.FileExtensionFilter };
var dialogResult = dialog.ShowDialog();
if (dialogResult.HasValue && dialogResult.Value)
{
... Process result of dialog ...
}

一切都很好,我想,但 ReSharper 在检查 dialogResult.HasValue 时提出警告,“表达式始终为真”。

第一个问题是 ReSharper 如何知道 dialogResult 总是有一个结果 - 它一定已经深入到 Microsoft.Win32.OpenFileDialog 类的反编译代码中并观察到它从来没有返回空值。要么,要么它只是专门针对此类的硬编码警告。

其次,仅仅假设结果永远不会为空似乎不是好的做法。如果 Microsoft 发布了空值可用的库的 future 版本怎么办?关于此事的文件说:"In the current implementation, the derived classes (OpenFileDialog and SaveFileDialog) will only return true or false"这确实意味着这不是我们可以永远依赖的永久安排。

关于我是否过于谨慎并且应该按照 ReSharper 建议删除该行有什么想法吗?

最佳答案

这看起来确实很奇怪。 MSDN 规范声明它将返回 true 或 false,但仍然必须有一个 Nullable 的原因。

我绝对同意你的看法,假设下面的实现是不好的做法。我会根据接口(interface)进行编码,所以在这种情况下,我认为检查 HasValue 是正确的方法。

Re-sharper 如何知道?恐怕我无法回答。这不是我使用的东西,他们可能已经对其进行了硬编码。

您可能对此感兴趣:When does Microsoft.Win32.OpenFileDialog.ShowDialog() return null?

似乎有可能为 null 的原因是因为这是用户关闭对话框之前的结果。

关于c# - 检查 OpenFileDialog 的可空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656477/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com