title: Object deconstruction use cases in C# 7.x
body: <p>I've just been exploring the new things introduced in C# 7.x. I found the <code>Deconstructor</code> function pretty interesting.</p>
  
  <pre><code>public class Person
  {
      public string FistName { get; }
      public string LastName { get; }
      public int Age { get; }
  
      public Person(string fistName, string lastName, int age)
      {
          Age = age;
          LastName = lastName;
          FistName = fistName;
      }
  
      public void Deconstruct(out string fistName, out string lastName, out int age) // todo 3.0 deconstructor function
      {
          fistName = FistName;
          lastName = LastName;
          age = Age;
      }
  }
  
  ...
  
  var person = new Person("John", "Smith", 18);
  var (firstName, lastName, age) = person;
  
  Console.WriteLine(firstName);
  Console.WriteLine(person.FirstName); // not much difference really
  </code></pre>
  
  <p>The thing is, I cannot figure out a practical usage for it. "Object" deconstruction comes very handy in functional programming pattern matching. However I believe it cannot be used this way in C# (yet?). If not, are there any real world use cases?</p>