C# ValueTuple <T1,T2,T3,T4,T5,T6> Struct
Last Updated :
11 Jul, 2025
ValueTuple <T1, T2, T3, T4, T5, T6> struct in C# is part of the System namespace and is used to create a tuple that storessextuple or 6-ValueTuple. It offers a more lightweight, value-type tuple compared to the older Tuple class and provides better performance and memory management. The ValueTuple struct is a value type and mutable means the value of its elements can be modified. Some key features about tuples are mentioned below:
- Mutable: The value of the Item(fields) can be changed after the tuple is created.
- Type-Safe: The field is specified when the tuple is created, ensuring type safety.
- Implements Interfaces: ValueTuple<T1, T2, T3, T4, T5, T6> implements several interfaces such as:
- IStructuralComparable
- IStructuralEquatable
- IComparable<ValueTuple<T1, T2, T3, T4, T5, T6>>
- IEquatable<ValueTuple<T1, T2, T3, T4, T5, T6>>
- ITuple: This makes it useful in various comparison and equality scenarios.
Constructor
ValueTuple<T1, T2, T3, T4, T5, T6>(T1, T2, T3, T4, T5, T6)
Fields
The constructor of this ValueTuple initializes the tuple with six values. It is not a property, it is a field that can be accessed by ValueTuple<ElementNumber>.
- Item1: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s first element.
- Item2: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s second element.
- Item3: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s third element.
- Item4: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s fourth element.
- Item5: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s fifth element.
- Item6: Gets the value of the current ValueTuple<T1, T2, T3, T4, T5, T6> instance’s sixth element.
Example 1:
C#
// Demonstration of access to the
// ValueTuple<T1, T2, T3, T4, T5, T6> element
using System;
class Geeks
{
static public void Main()
{
// Creating a value tuple using Create method
var lib = ValueTuple.Create(3, "C#", "Geek",
2025, "Programming", "English");
// Display the element of the value-tuple
Console.WriteLine("Details: ");
Console.WriteLine("Book Id: {0}", lib.Item1);
Console.WriteLine("Book Name: {0}", lib.Item2);
Console.WriteLine("Author Name: {0}", lib.Item3);
Console.WriteLine("Publication date: {0}", lib.Item4);
Console.WriteLine("Gener: {0}", lib.Item5);
Console.WriteLine("Language: {0}", lib.Item6);
}
}
OutputDetails:
Book Id: 3
Book Name: C#
Author Name: Geek
Publication date: 2025
Gener: Programming
Language: English
Explanation: In the above example create a ValueTuple with six elements of different types and print each element by field Item<elementNumber>.
Methods
Method | Description |
---|
CompareTo(ValueTuple) | It compares the current ValueTuple<T1> instance to a specified ValueTuple<T1> instance. |
Equals(Object) | It returns a value that indicates whether the current ValueTuple<T1> instance equals a specified object. |
Equals(ValueTuple<T1>) | It returns a value that indicates whether the current ValueTuple<T1> instance equals a specified ValueTuple<T1> instance. |
GetHashCode() | It calculates the hash code for the current ValueTuple<T1> instance. |
ToString() | It returns a string that represents the value of this ValueTuple<T1> instance. |
Example 2:
C#
// Demonstration of Equals() Method in ValueTuple
using System;
class Geeks
{
static public void Main()
{
// Creating 6-ValueTuple using Create method
var T1 = ValueTuple.Create(1, 2, 3, 4, 5, 6);
var T2 = ValueTuple.Create(1, 2, 3, 4, 5, 6);
// Check if both the value
// tuples are equal or not
if (T1.Equals(T2)) {
Console.WriteLine("Tuples Matched...!!");
}
else {
Console.WriteLine("Tuples Not Matched...!!");
}
}
}
OutputTuples Matched...!!
Explore
Introduction
Fundamentals
Control Statements
OOP Concepts
Methods
Arrays
ArrayList
String
Tuple
Indexers