Приведен следующий код:
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);
}
Я ожидал бы, что подход asyn c работает как подход syn c, но это не так: (
Я делаю что-то не так или типы async return
не поддерживаются для атрибута [NotNullWhen(true)]
?