5

我有以下代码行:

user.Exists = await this.repository?.Exists(id);

Exists左侧是User类的属性。它的类型是just bool,not bool?Exists右侧的方法是一个 API 方法,用于检查给定实体是否存在于存储库中。它返回Task<bool>。我想首先检查存储库是否为空,所以我使用空条件运算符。我认为如果存储库为空,那么整个右侧将只返回空,它不能分配给bool类型,但编译器似乎可以接受。它只是以某种方式默认为错误值吗?

4

1 回答 1

8

问题是等待。nullable 发生在 await 之前,所以就像await (this.repository?.Exists(id)),当 this.repository 为 null 时,变成await (null?.Exists(id)),变成await (null),然后崩溃。这 ?。无法进入Task<bool>并实现它Task<bool?>

所以你要么得到正确的布尔值,要么得到一个异常。

于 2016-11-11T23:19:48.077 回答