using static System.Console ;
public class Person {
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public string State { get; set; }
public Person( string fname, string mname, string lname, string cityName, string stateName) {
FirstName = fname;
MiddleName = mname;
LastName = lname;
City = cityName;
State = stateName;
}
public void Deconstruct( out string fname, out string lname) {
fname = FirstName;
lname = LastName;
}
public void Deconstruct( out string fname, out string mname, out string lname) {
fname = FirstName;
mname = MiddleName;
lname = LastName;
}
public void Deconstruct( out string fname, out string lname, out string city, out string state) {
fname = FirstName;
lname = LastName;
city = City;
state = State;
}
}
public class Example {
public static void Main( ) {
var p = new Person( "John" , "Quincy" , "Adams" , "Boston" , "MA" ) ;
var ( fName, lName, city, state) = p; //essa sintaxe é de desconstrução chamando o terceiro método
WriteLine( $"Hello {fName} {lName} of {city}, {state}!" ) ;
var ( nome, sobrenome) = p; //aqui chama o primeiro método de desconstrução.
WriteLine( $"{nome} {sobrenome}" ) ;
var ( pnome, _, unome) = p; //aqui chama o segundo método de desconstrução.
WriteLine( $"{pnome} {unome}" ) ;
}
}
//https://pt.stackoverflow.com/q/482769/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwoKcHVibGljIGNsYXNzIFBlcnNvbiB7CiAgICBwdWJsaWMgc3RyaW5nIEZpcnN0TmFtZSB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgc3RyaW5nIE1pZGRsZU5hbWUgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZyBMYXN0TmFtZSB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgc3RyaW5nIENpdHkgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZyBTdGF0ZSB7IGdldDsgc2V0OyB9CgogICAgcHVibGljIFBlcnNvbihzdHJpbmcgZm5hbWUsIHN0cmluZyBtbmFtZSwgc3RyaW5nIGxuYW1lLCBzdHJpbmcgY2l0eU5hbWUsIHN0cmluZyBzdGF0ZU5hbWUpIHsKICAgICAgICBGaXJzdE5hbWUgPSBmbmFtZTsKICAgICAgICBNaWRkbGVOYW1lID0gbW5hbWU7CiAgICAgICAgTGFzdE5hbWUgPSBsbmFtZTsKICAgICAgICBDaXR5ID0gY2l0eU5hbWU7CiAgICAgICAgU3RhdGUgPSBzdGF0ZU5hbWU7CiAgICB9CgogICAgcHVibGljIHZvaWQgRGVjb25zdHJ1Y3Qob3V0IHN0cmluZyBmbmFtZSwgb3V0IHN0cmluZyBsbmFtZSkgewogICAgICAgIGZuYW1lID0gRmlyc3ROYW1lOwogICAgICAgIGxuYW1lID0gTGFzdE5hbWU7CiAgICB9CgogICAgcHVibGljIHZvaWQgRGVjb25zdHJ1Y3Qob3V0IHN0cmluZyBmbmFtZSwgb3V0IHN0cmluZyBtbmFtZSwgb3V0IHN0cmluZyBsbmFtZSkgewogICAgICAgIGZuYW1lID0gRmlyc3ROYW1lOwogICAgICAgIG1uYW1lID0gTWlkZGxlTmFtZTsKICAgICAgICBsbmFtZSA9IExhc3ROYW1lOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIERlY29uc3RydWN0KG91dCBzdHJpbmcgZm5hbWUsIG91dCBzdHJpbmcgbG5hbWUsIG91dCBzdHJpbmcgY2l0eSwgb3V0IHN0cmluZyBzdGF0ZSkgewogICAgICAgIGZuYW1lID0gRmlyc3ROYW1lOwogICAgICAgIGxuYW1lID0gTGFzdE5hbWU7CiAgICAgICAgY2l0eSA9IENpdHk7CiAgICAgICAgc3RhdGUgPSBTdGF0ZTsKICAgIH0KfQoKcHVibGljIGNsYXNzIEV4YW1wbGUgewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CiAgICAgICAgdmFyIHAgPSBuZXcgUGVyc29uKCJKb2huIiwgIlF1aW5jeSIsICJBZGFtcyIsICJCb3N0b24iLCAiTUEiKTsKICAgICAgICB2YXIgKGZOYW1lLCBsTmFtZSwgY2l0eSwgc3RhdGUpID0gcDsgLy9lc3NhIHNpbnRheGUgw6kgZGUgZGVzY29uc3RydcOnw6NvIGNoYW1hbmRvIG8gdGVyY2Vpcm8gbcOpdG9kbwogICAgICAgIFdyaXRlTGluZSgkIkhlbGxvIHtmTmFtZX0ge2xOYW1lfSBvZiB7Y2l0eX0sIHtzdGF0ZX0hIik7CgkJdmFyIChub21lLCBzb2JyZW5vbWUpID0gcDsgLy9hcXVpIGNoYW1hIG8gcHJpbWVpcm8gbcOpdG9kbyBkZSBkZXNjb25zdHJ1w6fDo28uCiAgICAgICAgV3JpdGVMaW5lKCQie25vbWV9IHtzb2JyZW5vbWV9Iik7CgkJdmFyIChwbm9tZSwgXywgdW5vbWUpID0gcDsgLy9hcXVpIGNoYW1hIG8gc2VndW5kbyBtw6l0b2RvIGRlIGRlc2NvbnN0cnXDp8Ojby4KICAgICAgICBXcml0ZUxpbmUoJCJ7cG5vbWV9IHt1bm9tZX0iKTsKICAgIH0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvNDgyNzY5LzEwMQ==
compilation info
prog.cs(40,9): error CS0584: Internal compiler error: Custom deconstruct
prog.cs(41,34): error CS0841: A local variable `fName' cannot be used before it is declared
prog.cs(41,43): error CS0841: A local variable `lName' cannot be used before it is declared
prog.cs(41,58): error CS0841: A local variable `city' cannot be used before it is declared
prog.cs(41,68): error CS0841: A local variable `state' cannot be used before it is declared
prog.cs(42,3): error CS0584: Internal compiler error: Custom deconstruct
prog.cs(43,22): error CS0841: A local variable `nome' cannot be used before it is declared
prog.cs(43,30): error CS0841: A local variable `sobrenome' cannot be used before it is declared
prog.cs(44,3): error CS0584: Internal compiler error: Custom deconstruct
prog.cs(45,22): error CS0841: A local variable `pnome' cannot be used before it is declared
prog.cs(45,31): error CS0841: A local variable `unome' cannot be used before it is declared
Compilation failed: 11 error(s), 0 warnings
stdout