📦 ValueTuple = Lightweight Tuples
Return multiple values without creating classes. ValueTuple is lightweight, value-based, convenient.
📦 Tuple (Reference Type)
var result = Tuple.Create(1, "Alice"); int id = result.Item1; string name = result.Item2;
✅ ValueTuple (Value Type)
var result = (Id: 1, Name: "Alice"); int id = result.Id; string name = result.Name;
🎯 ValueTuple Examples
// Named tuple
var person = (Name: "Alice", Age: 30, Email: "alice@example.com");
Console.WriteLine(person.Name);
// Return multiple values
public (int Id, string Name, string Email) GetUser()
{
return (1, "Alice", "alice@example.com");
}
var (id, name, email) = GetUser();
// Deconstruction
var user = (Id: 1, Name: "Alice");
var (userId, userName) = user;
// Tuple as parameter
public void ProcessUser((string Name, int Age) user)
{
Console.WriteLine($"{user.Name}, {user.Age}");
}
// Tuple in LINQ
var result = users.Select(u => (u.Id, u.Name));
// Comparing tuples
var t1 = (1, "Alice");
var t2 = (1, "Alice");
bool equal = t1 == t2; // True
💡 Use Cases
- Return multiple values
- Lightweight data grouping
- LINQ projections
- Dictionary keys
- Quick data structures
“ValueTuple is lightweight and named. No classes needed. Essential for multiple return values.”
