我正在将代码库转换为支持可空引用类型的 C#8。我发现了一个类似于此问题中的方法,但它是异步的。
public async Task<T> GetAsync<T>()
{
// sometimes returns default(T); => warning CS8603 Possible null reference return
}
T可以是任何类型,包括可空引用类型或可空值类型。
明确一点,我知道为什么这个方法会触发一个警告。我想知道的是有哪些注释可以用来解决它。
- 我知道我可以使用 #nullable disable 或
default(T)!
,但我希望有一些不那么"强硬"的东西。 - 我知道我不能使用
[return: MaybNull]
,因为那将应用于Task
本身,而不是T
。
还有其他的属性/注释可以使编译器满意吗,还是default(T)!
是我的唯一选择?
MaybeNull
注释和null-forgiving运算符正在执行两个不同的操作?前者是修复警告的方法,后者确保调用者知道可能存在的情况。 - Peter Dunihodefault(T)!
作为解决方案,但它感觉像一个hack;我想知道这是否是唯一的解决方案。 - ChaseMedallion!
是唯一的选择,不像其他问题,那里有更好的选择。 - ChaseMedallion