Nello script #502 abbiamo visto come utilizzare la deconstruction con una tupla. In questo script invece vediamo come agiungere la deconstruction a una classe esistente così da poterne assegnare il valore delle proprietà direttamente a delle variabili.
Per aggiungere la deconstruction a una classe esistente dobbiamo creare il metodo Deconstruct che esprime solo parametri out e che nel corpo valorizza tali parametri. Questi parametri sono quelli che vengono utilizzati poi nella deconstructon.
Supponendo di avere una classe Person e di voler esporre il metodo Deconstruct con le proprietà FirstName e LastName, il codice da scrivere è quello del prossimo esempio.
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public DateTime DateOfBirth { get; set; }
public void Deconstruct(out string firstname, out string lastname)
{
firstname = FirstName;
lastname = LastName;
}
}Se vogliamo utilizzare la deconstruction, il codice da scrivere è il seguente.
var p = new Person
{
FirstName = "Stefano",
LastName = "Mostarda"
};
var (firstName, lastName) = p;Possiamo creare diversi overload del metodo Deconstruct e possiamo anche utilizzare il carattere di discard "_" se non vogliamo assegnareun determinato valore a una variabile.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Speciale Windows Azure: la piattaforma di Microsoft per il cloud computing
- Microsoft svela i dettagli dello store di Windows 8
- Windows Server 2003: 300% in più in tre mesi
- ASP to ASP.NET Migration Roadshow in 11 città
- Speciale Forms Authentication di ASP.NET
- Visual Studio 2005 Web Application Projects
- Microsoft Security Bulletin MS07-042, MS07-043, MS07-044, MS07-045, MS07-046, MS07-047, MS07-048, MS07-049, MS07-050
- Versione 1.3 del .NET managed provider per MySQL
- Scatenare un postback da una confirm dialog di jQuery UI
- Creare un Route Constraint personalizzato per ASP.NET Web API 2


