📦 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
// Tuple with methods
public (bool Success, string Message, User User) TryGetUser(int id)
{
var user = _context.Users.Find(id);
if (user == null)
return (false, "User not found", null);
return (true, "Success", user);
}
var result = TryGetUser(1);
if (result.Success)
{
Console.WriteLine(result.User.Name);
}
// ValueTuple Use Cases
- Return multiple values
- Lightweight data grouping
- LINQ projections
- Dictionary keys
- Quick data structures
💡 ValueTuple Tips
- 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.”
