Кортежные литералы в объявлениях интерфейса - PullRequest
0 голосов
/ 15 января 2019

Итак, ура для кортежей! Я знаю, что могу вернуть несколько значений из метода с кортежами и дать им имена, чтобы они не были Item1, Item2 и т. Д. Я могу пойти var results = (result1: r1, result2: r2);

Но как использовать литералы кортежей в объявлении интерфейса, таком как этот?

public interface IFoo {
    (T1, T2) Bar();
}

Пробовал делать (result1: T1, result2: t2) Bar();, но это не работает. Есть ли способ вернуть именованный кортеж из метода интерфейса?

1 Ответ

0 голосов
/ 15 января 2019

Ваш синтаксис для именованных кортежей как типа возврата метода неверен:

public interface IFoo {
    (T1 result1, T2 result2) Bar();
}

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

// Method return syntax. Type & Name
public (bool success, T payload) TryGetPayload<T>() { }

// Literal assignment syntax. Name & Value
var result = (success: true, payload: t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...