在 ReadFromJsonAsync 之后从可空变为不可空

Go from nullable to non-nullable after ReadFromJsonAsync

ReadFromJsonAsync 方法 returns 可空 T。这是一个代码示例:

private async Task<T> Get<T>(Uri url, CancellationToken cancellationToken)
{
    using HttpResponseMessage response = await _httpClient.GetAsync(url, cancellationToken);

    T? body = await response.Content.ReadFromJsonAsync<T>(cancellationToken: cancellationToken);

    return body ?? throw new Exception();
}

我希望我的方法 return 不可空值。

我想知道 ReadFromJsonAsync 何时会 return 无效。无论我如何尝试,我仍然得到所有属性都为 null 的 T 实例。所以我希望这样写代码是安全的:

    return (T)body;

但现在我收到警告正在将 null 文字或可能的 null 值转换为不可为 null 的类型。

怎么样,这个主意好吗:

    return body!;

ReadFromJsonAsync 是一种实用方法,它获取响应的内容流,然后将其传递给 JsonSerializer.DeserializeAsync.

DeserializeAsync 被定义为 return 可空值,因为它 可能 return 为空。如果您尝试反序列化 null JSON 值,它将这样做。

如果您不期望这些,则可以使用 ! 忽略警告。但最安全的方法是确实检查 null 并抛出异常或 return 后备值。