使用 FFI 检查指针是否是 Dart 中的空指针的最佳方法是什么?
目前的做法是这样的:
ffi.Pointer<Thing> thing = ... // can potentially return null
if(thing == ffi.nullptr) {
...
但是,当然,这会给出"相等运算符==
调用不相关类型的引用"警告消息。
该 API 仍然很新,我不确定如何处理这个问题。我也可能想多了,有一个超级简单的答案。
好吧,我还没有尝试过 dart:ffi,但从 == 的 API 文档中您可以看到:
指针的相等性仅取决于其地址
https://api.dart.dev/dev/2.6.0-dev.0.0/dart-ffi/Pointer-class.html
因此,您可以做的只是比较两个指针的地址:
ffi.Pointer<Thing> thing = ... // can potentially return null
if(thing.address == ffi.nullptr.address) {
...
实际上,空指针只是一个指向地址 0 的指针:
final Pointer<Void> nullptr = Pointer.fromAddress(0)
https://api.dart.dev/dev/2.6.0-dev.0.0/dart-ffi/nullptr.html