Tuple Deconstruction in C#: A Complete Guide


What is Tuple Deconstruction?
Tuple Deconstruction in C# (introduced in C# 7.0) lets you unpack the values of a tuple directly into separate variables, without having to access .Item1
, .Item2
, and so on.
It makes your code cleaner, more readable, and often more efficient.
Basic Example
(string name, int age) GetUser() => ("Ali", 30);
var (n, a) = GetUser();
Console.WriteLine($"{n} - {a}");
// Output: Ali - 30
🔹 Here, GetUser()
returns a ValueTuple, and we immediately unpack it into (n, a)
.
Changing Variable Names
You can give the unpacked variables more meaningful names:
var (userName, userAge) = GetUser();
Skipping Unwanted Values
If you don’t need all tuple items, use the discard _
:
var (name, _) = GetUser(); // Only get the name
Using in Loops
var users = new List<(string Name, int Age)>
{
("Ali", 30),
("Sara", 25)
};
foreach (var (name, age) in users)
{
Console.WriteLine($"{name} - {age}");
}
🔹 Clean and readable for iterating over lists of tuples.
Deconstruction in Classes & Structs
You can create your own Deconstruct
method so that even custom types can be unpacked:
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public void Deconstruct(out string name, out int age)
{
name = Name;
age = Age;
}
}
var u = new User { Name = "Reza", Age = 28 };
var (n, a) = u;
Console.WriteLine($"{n} - {a}");
ValueTuple vs Old Tuple
ValueTuple (new) → struct-based, faster, supports deconstruction.
System.Tuple (old) → class-based, immutable, no built-in deconstruction support.
Summary
Tuple Deconstruction is:
Cleaner and more readable
Great for methods returning multiple values
Useful for logging, loops, and combining multiple data points
💡 Pro Tip:
Combine Tuple Deconstruction with discard variables (_
) and pattern matching to write concise and expressive C# code.
I’m Morteza Jangjoo and “Explaining things I wish someone had explained to me”
Subscribe to my newsletter
Read articles from Morteza Jangjoo directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
