c# - C# 8 可空引用类型 - [NotNullWhen(bool)] 与异步任务
问题描述
给出以下代码:
private async Task NotNullTestAsync(bool fakeSyncParameter, bool fakeAsyncParameter)
{
// SYNC
var syncValue = fakeSyncParameter ? null : (int?)0;
if (!this.NotNullWhenTrueSync(syncValue))
{
return;
}
// Works...
Debug.WriteLine(syncValue.Value);
// ASYNC
var asyncValue = fakeAsyncParameter ? null : (int?)0;
var asyncResult = await this.NotNullWhenTrueAsync(asyncValue).ConfigureAwait(false);
if (!asyncResult)
{
return;
}
// Nullable value type may be null "error"
Debug.WriteLine(asyncValue.Value);
}
private bool NotNullWhenTrueSync([NotNullWhen(true)]int? value)
{
return value.HasValue;
}
private async Task<bool> NotNullWhenTrueAsync([NotNullWhen(true)]int? value)
{
return await Task.FromResult(value.HasValue).ConfigureAwait(false);
}
我希望异步方法像同步方法一样工作,但它不是:(
我做错了什么还是该属性async return
不支持类型?[NotNullWhen(true)]
解决方案
推荐阅读
- javascript - 用不同的字母大小写替换文本
- react-navigation - stackNavigator 中的嵌套抽屉在隐藏时关闭模式
- bash - 不要在 60 秒内重启服务超过 1 次 inotify
- swift - Apple Watch 上的默认本地化语言错误
- kubernetes - k8s配置图如何应用
- php - 从数据库中随机选择
- java - 如何在 Android Studio 中向导航抽屉添加新活动
- python - Python:锁定目录
- reporting-services - SSRS - 浮动总和(前 5 个)
- database - 如何使用等于和按日期 ASC 和 DESC 排序为 mongoDB 创建有效索引