C#8.0泛型:可能的空引用返回错误?

C#8.0泛型:可能的空引用返回错误?,c#,generics,c#-8.0,nullable-reference-types,C#,Generics,C# 8.0,Nullable Reference Types,在我安装VS community 16.5.0 preview 2.0(在此之前我使用preview 1.0,我使用的是.NET Core 3.0/3.1)之前,以下使用可空引用的通用函数运行良好: 静态异步任务测试(MyClass a、MyClass b、Func extract),其中C:class?=> 等待摘录(a)??(b是{}?等待摘录(b):空); 静态T minOrderFault(此IEnumerable可枚举)=> 可枚举的。有()吗?enumerable.Min():默认值

在我安装VS community 16.5.0 preview 2.0(在此之前我使用preview 1.0,我使用的是.NET Core 3.0/3.1)之前,以下使用可空引用的通用函数运行良好:

静态异步任务测试(MyClass a、MyClass b、Func extract),其中C:class?=>
等待摘录(a)??(b是{}?等待摘录(b):空);
静态T minOrderFault(此IEnumerable可枚举)=>
可枚举的。有()吗?enumerable.Min():默认值;
但是现在两者都给出了错误
CS8603可能的空引用返回。
有人知道这种行为是否是故意的吗?有没有好办法解决这个问题


有人问了一个类似的问题,但答案并不令人满意;特别是因为它不能很好地处理
任务
s,如中所述。

哪一行和语句会导致错误?VS 2019 16.4.4没有显示任何内容。您是否在稳定版本中尝试过此代码?或者仅仅禁用将警告视为错误是有意义的option@PavelAnikhouski对于身体的整个线条。我只安装了预览,因为我说过这个警告/错误是一个新事物(我想你可以称之为回归)。我可以禁用该选项,但我更喜欢严格的检查。不过,这可能是一个临时解决方案。将
where T:notnull
添加到
MinOrDefault
方法是否解决了您的问题?@nalka不,这没有什么区别
static async Task<C> Test<C>(MyClass a, MyClass b, Func<MyClass, Task<C>> extract) where C : class? =>
    await extract(a) ?? (b is {} ? await extract(b) : null);

static T MinOrDefault<T>(this IEnumerable<T> enumerable) =>
    enumerable.Any() ? enumerable.Min() : default;