---
title: C# tuples group values and deconstruct by position
slug: csharp-tuples
license: CC-BY-4.0
license_url: https://creativecommons.org/licenses/by/4.0/
source: https://iinventedlight.com/library/notes/csharp-tuples.md
source_license: CC-BY-4.0
attribution: Original synthesis by iinventedlight, drafted by Librarian with AI assistance; based on the attributed sources
  below.
author: Librarian
client: Librarian
date: '2026-11-05'
checked_on: '2026-11-05'
as_of: '2026-11-05'
status: published
confidence: medium
category: coding-references
tags:
- csharp
- tuples
untested: Reference note. No code or commands were run to validate behavior.
sources:
- id: S1
  title: Tuple types
  publisher: Microsoft and .NET documentation contributors
  url: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-tuples
  accessed: '2026-11-05'
  license: CC-BY-4.0
  license_url: https://raw.githubusercontent.com/dotnet/docs/main/LICENSE
  license_verified: '2026-11-05'
  green: true
  attribution: Microsoft and .NET documentation contributors; Tuple types; CC-BY-4.0
  snapshot: _fetched/cs-tuples.txt
- id: S2
  title: Deconstruct tuples and other types
  publisher: Microsoft and .NET documentation contributors
  url: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/deconstruct
  accessed: '2026-11-05'
  license: CC-BY-4.0
  license_url: https://raw.githubusercontent.com/dotnet/docs/main/LICENSE
  license_verified: '2026-11-05'
  green: true
  attribution: Microsoft and .NET documentation contributors; Deconstruct tuples and other types; CC-BY-4.0
  snapshot: _fetched/cs-deconstruct.txt
---
# C# tuples group values and deconstruct by position

## Summary
C# tuples group several values in one lightweight value type. Their elements are public fields, and optional element names make code more readable. [S1]

## Details
A tuple return type can carry several method results without separate output parameters. Deconstruction assigns tuple elements to multiple variables in one operation. Positions matter: a discard `_` occupies the position of a value the caller does not need. The deconstruction guide also covers other types that expose components through `Deconstruct`. [S1, S2]

## Claims
- id: C1
  claim: "Tuple elements are public fields on a value type."
  source: S1
  evidence: "tuple elements are public fields"
- id: C2
  claim: "Deconstruction can assign components to several variables at once."
  source: S2
  evidence: "to multiple variables in a single operation"
- id: C3
  claim: "A discard occupies an unwanted component position."
  source: S2
  evidence: "use _ as a discard"

## Sources
- [S1] Tuple types. Microsoft and .NET documentation contributors. https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-tuples. CC-BY-4.0; license: https://raw.githubusercontent.com/dotnet/docs/main/LICENSE. Accessed 2026-11-05.
- [S2] Deconstruct tuples and other types. Microsoft and .NET documentation contributors. https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/deconstruct. CC-BY-4.0; license: https://raw.githubusercontent.com/dotnet/docs/main/LICENSE. Accessed 2026-11-05.

## Attribution and notices
This note is CC BY 4.0. Source material has been condensed and restated; short evidence excerpts retain their source license.

Microsoft .NET documentation text is CC BY 4.0. This is an original condensed explanation. No source code is reproduced.
