"Use cases" è una verbosità un po 'strana per la domanda. Questo non ti permette davvero di fare nulla che non potresti mai fare prima. In alcuni casi è semplicemente più ordinato.
L'unica cosa importante che posso pensare è che ti dà un controllo limitato in fase di compilazione. Ad esempio, supponi di avere una classe UsAddress
. Hai linea 1, linea 2, città, stato e zip. Puoi decostruire in variabili var (line1, line2, city, state, zip) = ObtainAddress()
. Ora supponiamo di voler aggiungere una linea 3. Questo punto sarà ora un errore di compilazione perché non corrisponde al decostruttore e puoi valutare cosa devi fare sulla linea 3 in ogni sito di chiamata. L'alternativa sarebbe:
var address = ObtainAddress();
var line1 = address.Line1;
// ...
In questo caso, non ci sarebbe alcun errore di compilazione per il nuovo campo. Che sia buono o meno è, ovviamente, il suo dibattito.
Molte delle idee introdotte in C # 6 e 7 sono state la lucidatura e l'attenuazione dei punti deboli e sembra che molte persone si siano lamentate della mancanza di un supporto di prima classe per le tuple nella lingua. Quindi non è tanto il "caso d'uso" quanto lo zucchero sintattico.