Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
C#

C#: Use ValueTuple for Lightweight Multiple Return Values

- 04.07.26 - ErcanOPAK

📦 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.”

— C# Developer

Related posts:

C#: Use LINQ to Query Collections Like SQL

C# Collections Resize Too Often

C#: Build ETL Pipelines with LINQ

Post Views: 2

Post navigation

C#: Use Object Initializers for Clean Object Creation
Strategy Pattern & Pipeline Pattern in C# .NET – A Deep Dive with Real-World Examples

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (940)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (554)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (940)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com