【发布时间】:2022-11-11 10:10:00
【问题描述】:
我有类似于以下的代码。
public List<string>? Data { get; set; }
[MemberNotNullWhen(true, nameof(Data))]
public bool Read()
{
Data = ReadData();
return Data != null;
}
MemberNotNullWhenAttribute 表示当方法返回 true 时,Data 不为空。这可以防止在使用 Data 而不显式测试它是否为 null 时出现警告。
这很好用。但现在我想添加此方法的async 版本。
[MemberNotNullWhen(true, nameof(Data))]
public async bool ReadAsync()
{
Data = await ReadDataAsync();
return Data != null;
}
这编译得很好并且没有警告。但是MemberNotNullWhenAttribute 完全被忽略了。在此方法返回 true 后使用 Data 仍然会给出可能为 null 的警告。
有没有人想出如何在异步方法中指示成员不为空?我正在写一个图书馆,这种东西很重要。
【问题讨论】:
标签: c# .net .net-core nullable-reference-types