У меня есть
(string name, int val) f(bool ok) {
if (!ok) return default;
return ('John', 5);
}
Затем я делаю где-то:
var result = f(true);
if (result==default) return false;
var (name, val) = result;
... do something with name & val
Я нахожу это запутанным и слишком многословным .. Я создаю result
только для проверки по умолчанию - я не надеваюиначе это не нужно ... есть ли более элегантный способ проверки по умолчанию без использования промежуточной переменной result
?
Я могу сделать:
var (name, val) = f(true);
if ((name, val)==default) return false;
... do something with name & val
но опять-таки это утомительноособенно если ValueTuple имеет множество аргументов ...
РЕДАКТИРОВАТЬ:
Теперь я понимаю, что приведенный выше код не только многословен, но что общий шаблон содержит ошибки - вы не можете использовать default какзаменить состояние ошибки с помощью ValueTuples, причина в том, что для некоторых ValueTuple - то есть (int, int) - невозможно отличить значение по умолчанию от другого действительного значения - то есть (0, 0) и т. д.