我已经开始在 C# 8 中使用可为 null 的引用类型。到目前为止,除了一件小事之外,我很喜欢这种改进。
我正在迁移一个旧的代码库,它充满了很多冗余或无法访问的代码,例如:
void Blah(SomeClass a) {
if (a == null) {
// this should be unreachable, since a is not nullable
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有看到任何可以为我标记此代码的警告设置!这是微软的疏忽,还是我遗漏了什么?
我也使用 ReSharper,但它的警告设置似乎也没有捕捉到这一点。有没有其他人找到解决这个问题的方法?
编辑:我知道从技术上讲这仍然可以访问,因为可空性检查不是防弹的。这不是重点。在这种情况下,我将参数声明为NOT nullable,检查它是否为空通常是一个错误。在 null 作为不可空类型传入的罕见事件中,我更愿意查看NullReferenceException并追踪错误传入 null 的违规代码。
我已阅读文档,但我仍然对获取策略“存储和网络”和“仅网络”之间的区别感到困惑。
“store-and-network”:将重用本地缓存的数据,并且始终发送网络请求,无论本地缓存中是否缺少任何数据。
“仅网络”:不会重用本地缓存的数据,并且始终发送网络请求来获取查询,忽略任何可能在 Relay 中本地缓存的数据。
我只是不明白“商店和网络”的意义是什么。它声称它“将重用本地缓存的数据”......但它总是从网络获取,那么它到底可以重用什么?
在我的应用程序中,我对两者进行了实验,发现行为差异为零。有人可以对此进行扩展,也许可以演示“存储和网络”和“仅网络”实际上会从查询返回不同结果的场景吗?