ValueTuple Struct
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Provides static methods for creating value tuples.
public value class ValueTuple : IComparable, IComparable<ValueTuple>, IEquatable<ValueTuple>, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public value class ValueTuple : IComparable, IComparable<ValueTuple>, IEquatable<ValueTuple>, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable
public struct ValueTuple : IComparable, IComparable<ValueTuple>, IEquatable<ValueTuple>, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
public struct ValueTuple : IComparable, IComparable<ValueTuple>, IEquatable<ValueTuple>, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
[System.Serializable]
public struct ValueTuple : IComparable, IComparable<ValueTuple>, IEquatable<ValueTuple>, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
type ValueTuple = struct
interface ITuple
type ValueTuple = struct
[<System.Serializable>]
type ValueTuple = struct
interface ITuple
Public Structure ValueTuple
Implements IComparable, IComparable(Of ValueTuple), IEquatable(Of ValueTuple), IStructuralComparable, IStructuralEquatable, ITuple
Public Structure ValueTuple
Implements IComparable, IComparable(Of ValueTuple), IEquatable(Of ValueTuple), IStructuralComparable, IStructuralEquatable
- Inheritance
- Attributes
- Implements
Remarks
A tuple is a data structure that has a specific number and sequence of elements. An example of a tuple is a data structure with three elements (known as a 3-tuple or triple) that is used to store an identifier such as a person's name in the first element, a year in the second element, and the person's income for that year in the third element.
Value tuples are tuple types introduced in the .NET Framework 4.7 to provide the runtime implementation of tuples in C# and struct tuples in F#. They differ from the tuple classes, such as Tuple<T1>, Tuple<T1,T2>, etc., as follows:
They are structures (value types) rather than classes (reference types).
They are mutable rather than read-only. That is, the value of tuple components can change.
Their data members, such as
Item1
,Item2
, etc., are fields rather than properties.
The ValueTuple structure represents a tuple that has no elements. It is useful primarily for its static methods that let you create and compare instances of value tuple types. Its helper methods let you instantiate value tuples without having to explicitly specify the type of each value tuple component. By calling its static Create methods, you can create value tuples that have from zero to eight components. For value tuples with more than eight components, you must call the ValueTuple<T1,T2,T3,T4,T5,T6,T7,TRest> constructor.
Serialization and value tuples
The ValueTuple type is not serializable in .NET Core 1.x or in the .NET Framework 4.7 and earlier versions. In addition, .NET Standard, including .NET Standard 2.0, does not mandate serialization of ValueTuple instances; whether or not a ValueTuple instance is serializable depends on the individual .NET Standard implementation. To determine whether a ValueTuple type is serializable on a particular .NET implementation, get a Type object that represents the ValueTuple type and retrieve the value of its IsSerializable property. For a list of serializable types in .NET Core and the .NET Framework, see Binary Serialization.
Methods
CompareTo(ValueTuple) |
Compares the current ValueTuple instance to a specified ValueTuple instance. |
Create() |
Creates a new value tuple with zero components. |
Create<T1,T2,T3,T4,T5,T6,T7,T8>(T1, T2, T3, T4, T5, T6, T7, T8) |
Creates a new value tuple with 8 components (an octuple). |
Create<T1,T2,T3,T4,T5,T6,T7>(T1, T2, T3, T4, T5, T6, T7) |
Creates a new value tuple with 7 components (a septuple). |
Create<T1,T2,T3,T4,T5,T6>(T1, T2, T3, T4, T5, T6) |
Creates a new value tuple with 6 components (a sexuple). |
Create<T1,T2,T3,T4,T5>(T1, T2, T3, T4, T5) |
Creates a new value tuple with 5 components (a quintuple). |
Create<T1,T2,T3,T4>(T1, T2, T3, T4) |
Creates a new value tuple with 4 components (a quadruple). |
Create<T1,T2,T3>(T1, T2, T3) |
Creates a new value tuple with 3 components (a triple). |
Create<T1,T2>(T1, T2) |
Creates a new value tuple with 2 components (a pair). |
Create<T1>(T1) |
Creates a new value tuple with 1 component (a singleton). |
Equals(Object) |
Returns a value that indicates whether the current ValueTuple instance is equal to a specified object. |
Equals(ValueTuple) |
Determines whether two ValueTuple instances are equal. This method always returns |
GetHashCode() |
Returns the hash code for the current ValueTuple instance. |
ToString() |
Returns the string representation of this ValueTuple instance. |
Explicit Interface Implementations
IComparable.CompareTo(Object) |
Compares this ValueTuple instance with a specified object and returns an indication of their relative values. |
IStructuralComparable.CompareTo(Object, IComparer) |
Compares the current ValueTuple instance to a specified object. |
IStructuralEquatable.Equals(Object, IEqualityComparer) |
Returns a value that indicates whether the current ValueTuple instance is equal to a specified object based on a specified comparison method. |
IStructuralEquatable.GetHashCode(IEqualityComparer) |
Returns the hash code for this ValueTuple instance. |
ITuple.Item[Int32] |
Returns an IndexOutOfRangeException. There are no elements in a |
ITuple.Length |
Gets the length of this |