Присваиваем сразу много значений кортежами
Скажем, в одном контексте (блоке кода) доступы объекты
А а;
B b;
Есть метод, который возвращает значения для этих объектов
(A MyA, B MyB) MyMethod();
В чём разница между двумя следующими присваиваниями ниже? Как оно выглядит - пофиг. Меня интересует производительность и потребление памяти.
(a, b) = MyMethod();
var result = MyMethod();
a = result.MyA;
b = result.MyB;
Пример может быть и сложнее - скажем, вместо простых a и b могут быть свойства разных объектов, коллекции и прочее. Но мне удобно объединить возврат в кортеж и присвоить тоже в кортеже, т.к. все значения в возврате связаны семантически. А не создавать отдельный объект на возврат и не писать портянку отдельных присваиваний, как во втором случае.
Вообще, запись
(a, b) = MyMethod();
создаёт кортеж из a и b в левом операнде, или это просто синтаксический сахар для присваивания? Если кортеж создаётся, то вот оно и потребление памяти - целый объект создался! В отличие от второго варианта сверху, где a и b присваиваются независимо, и следовательно кортеж для них не создаётся. Но зато я пишу куда больше кода.