Кортеж в аргументе
Кортеж — способ передать несколько связанных значений одним аргументом без создания отдельного класса.
// обычные аргументы — три отдельных параметра
void FindElement(string tag, string attribute, string value)
// кортеж — один параметр из трёх значений
void FindElement((string tag, string attribute, string value) selector)Зачем это нужно
Если несколько значений всегда ходят вместе — кортеж делает сигнатуру функции понятнее и позволяет передавать этот набор как одну переменную.
Практика: ожидание и клик по кнопке
void WaitAndClick((string tag, string attribute, string value) selector)
{
int retries = 30;
while (instance.ActiveTab.FindElementByAttribute(
selector.tag, selector.attribute, selector.value, "regexp", 0).IsVoid
&& retries > 0)
{
retries--;
Thread.Sleep(1000);
}
var el = instance.ActiveTab.FindElementByAttribute(
selector.tag, selector.attribute, selector.value, "regexp", 0);
if (el.IsVoid)
throw new Exception($"Элемент не найден: {selector.tag} {selector.attribute}={selector.value}");
el.RiseEvent("click", instance.EmulationLevel);
}Вызов — кортеж передаётся в скобках:
WaitAndClick(("button", "innertext", "I\\ already\\ have\\ an\\ address"));
WaitAndClick(("button", "innertext", "Create\\ a\\ new\\ wallet"));
WaitAndClick(("button", "innertext", "I\\ agree"));Три разные кнопки — три строки вместо трёх копий одного и того же кода.