Как разрешить обнуляемый тип generi c в C# 8 в качестве типа возврата для метода? - PullRequest
1 голос
/ 07 января 2020

У меня есть следующий код:

public async Task<T> Retrieve<T>()
    where T : class, ITableEntity
{
    var result = await GetData<T>();
    return result.Result as T; // result.Result is object
}

Теперь компилятор выдает предупреждение Possible null reference return. Я могу исправить это с помощью '!', Но на самом деле я хочу разрешить нулевое значение, так что кажется неправильным делать это таким образом. Я действительно не знаю, почему компилятор предполагает, что класс означает ненулевое значение, я попытался написать class? (даже не знаю, что это значит, но он компилируется, хотя выдает то же предупреждение).

Можно ли сказать компилятору, что T может быть обнуляемым ссылочным типом? Я предполагаю, что по умолчанию он не обнуляется.

1 Ответ

9 голосов
/ 07 января 2020
public async Task<T?> Retrieve<T>()
    where T : class, ITableEntity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...