Как деконструировать Nullable Tuple? - PullRequest
0 голосов
/ 02 марта 2019

Я использую C # 8.0 с включенной NullableContextOptions (Nullable Reference).

У меня есть функция с этой подписью:

public static (int line, string content)? GetNextNonEmptyLineDown(this IList<string> contents, int fromLine)

По сути, она возвращает строку и содержимоеесли есть непустая строка вниз, и возвращает, если ее нет.

Проблема в том, что я не знаю, как ее деконструировать.Если я попытаюсь:

var (firstLineIndex, firstLine) = content.GetNextNonEmptyLineDown(0);

, я получу 4 синтаксические ошибки:

enter image description here

Так что я могу использовать только:

        var lineInfo = content.GetNextNonEmptyLineDown(0);

        var firstLineIndex =  lineInfo.Value.line;
        var firstLine = lineInfo.Value.content;

, который разрушает цель.lineInfo имеет тип struct<T> where T is (int line, string content)

Есть ли способ деконструировать обнуляемый кортеж?

РЕДАКТИРОВАТЬ: после публикации вопроса, мне кажется, что нет смысла разрешать деконструкциюОбнуляемый кортеж как тип данных переменных может быть не определен.Вот мое текущее исправление, но я думаю, что это лучший способ:

        var lineInfo = content.GetNextNonEmptyLineDown(0);

        if (lineInfo == null)
        {
            throw new Exception();
        } 

        var (firstLineIndex, firstLine) = lineInfo.Value;
...