如何在 C# 8 中允许可空泛型类型作为方法的返回类型?

Ily*_*dik 3 c# generics nullable-reference-types

我有以下代码:

public async Task<T> Retrieve<T>()
    where T : class, ITableEntity
{
    var result = await GetData<T>();
    return result.Result as T; // result.Result is object
}
Run Code Online (Sandbox Code Playgroud)

现在编译器给出警告Possible null reference return。我可以用 '!' 修复它,但我实际上确实想允许 null,所以这样做似乎是错误的。我真的不知道为什么编译器会假设该类表示不可为空,我尝试编写class?(甚至不知道这意味着什么,但它可以编译,尽管它给出了相同的警告)。

是否可以告诉编译器 T 可以是可为空的引用类型?我猜它默认为不可为空。

Mar*_*ell 10

public async Task<T?> Retrieve<T>()
    where T : class, ITableEntity
Run Code Online (Sandbox Code Playgroud)