颤振,飞镖:这些代码片段之间有什么区别?



代码段A正常工作,但代码段B不正常。我用print()检查变量"image"的数据类型,A和B的图像(变量)都有一个数据类型(XFile),而不是Null。但B仍然不工作....

final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
print(image);
// Code snippet A
if (image == null) return null;
return File(image.path);
// Code snippet B
return File(image!.path);

你的代码片段A的含义是:

如果image变量为null,则返回null,否则返回image变量。

你的代码段B的含义是:

返回image变量,尽管image变量可能为空。

如果您使用代码片段B,您使用!并将变量从可空类型更改为非可空类型,并且变量实际上是空的(没有值),并且您不能使用.path,因此它返回错误。

image可以是null,在代码A中,您检查nullable值,因此您不会得到exception,但在代码B中,您在nullable值上使用!,这是错误的。

如果你在寻找简短的形式,你可以试试:

return image == null ? null : File(image.path);

相关内容

  • 没有找到相关文章

最新更新