是否有可能标记async Task<T>
的结果可以为空?使用Attribute [CanBeNull]不起作用,因为async Task的返回值永远不为null。
[CanBeNull] // not working...
private async Task<T> doSomeFancyAsyncStuff([NotNull] object icantbenull) { ...
你可以使用Resharper ItemCanBeNullAttribute
可以应用于从IEnumerable派生的类型的符号以及Task和Lazy类的符号,以指示集合项,Task.Result属性或Lazy.Value属性的值可以为null。
适用于您的示例:
[ItemCanBeNull]
public async Task<string> GetSomeName() {
var time = DateTime.Now;
if(time.Second == 30) {
return "Jimmy";
} else {
return null;
}
}