Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1074 lines (935 sloc) 64.4 KB
<Type Name="Tuple&lt;T1,T2,T3,T4,T5,T6,T7&gt;" FullName="System.Tuple&lt;T1,T2,T3,T4,T5,T6,T7&gt;">
<TypeSignature Language="C#" Value="public class Tuple&lt;T1,T2,T3,T4,T5,T6,T7&gt; : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi serializable beforefieldinit Tuple`7&lt;T1, T2, T3, T4, T5, T6, T7&gt; extends System.Object implements class System.Collections.IStructuralComparable, class System.Collections.IStructuralEquatable, class System.IComparable" />
<TypeSignature Language="DocId" Value="T:System.Tuple`7" />
<TypeSignature Language="VB.NET" Value="Public Class Tuple(Of T1, T2, T3, T4, T5, T6, T7)&#xA;Implements IComparable, IStructuralComparable, IStructuralEquatable" />
<TypeSignature Language="C++ CLI" Value="generic &lt;typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7&gt;&#xA;public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable" />
<TypeSignature Language="F#" Value="type Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt; = class&#xA; interface IStructuralEquatable&#xA; interface IStructuralComparable&#xA; interface IComparable" />
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<TypeParameters>
<TypeParameter Name="T1" />
<TypeParameter Name="T2" />
<TypeParameter Name="T3" />
<TypeParameter Name="T4" />
<TypeParameter Name="T5" />
<TypeParameter Name="T6" />
<TypeParameter Name="T7" />
</TypeParameters>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
</Base>
<Interfaces>
<Interface>
<InterfaceName>System.Collections.IStructuralComparable</InterfaceName>
</Interface>
<Interface>
<InterfaceName>System.Collections.IStructuralEquatable</InterfaceName>
</Interface>
<Interface>
<InterfaceName>System.IComparable</InterfaceName>
</Interface>
</Interfaces>
<Attributes>
<Attribute FrameworkAlternate="netframework-4.0;netframework-4.5;netframework-4.5.1;netframework-4.5.2;netframework-4.6;netframework-4.6.1;netframework-4.6.2;netframework-4.7;netframework-4.7.1;netframework-4.7.2;netframework-4.8;xamarinandroid-7.1;xamarinios-10.8;xamarinmac-3.0">
<AttributeName>System.Serializable</AttributeName>
</Attribute>
</Attributes>
<Docs>
<typeparam name="T1">The type of the tuple's first component.</typeparam>
<typeparam name="T2">The type of the tuple's second component.</typeparam>
<typeparam name="T3">The type of the tuple's third component.</typeparam>
<typeparam name="T4">The type of the tuple's fourth component.</typeparam>
<typeparam name="T5">The type of the tuple's fifth component.</typeparam>
<typeparam name="T6">The type of the tuple's sixth component.</typeparam>
<typeparam name="T7">The type of the tuple's seventh component.</typeparam>
<summary>Represents a 7-tuple, or septuple.</summary>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
A tuple is a data structure that has a specific number and sequence of values. The <xref:System.Tuple%607> class represents a 7-tuple, or septuple, which is a tuple that has seven components.
You can instantiate a <xref:System.Tuple%607> object by calling either the <xref:System.Tuple%607.%23ctor%2A> or the static <xref:System.Tuple.Create%60%607%28%60%600%2C%60%601%2C%60%602%2C%60%603%2C%60%604%2C%60%605%2C%60%606%29?displayProperty=nameWithType> method. You can retrieve the value of the tuple's components by using the read-only <xref:System.Tuple%607.Item1%2A>, <xref:System.Tuple%607.Item2%2A>, <xref:System.Tuple%607.Item3%2A>, <xref:System.Tuple%607.Item4%2A>, <xref:System.Tuple%607.Item5%2A>, <xref:System.Tuple%607.Item6%2A>, and <xref:System.Tuple%607.Item7%2A> instance properties.
Tuples are commonly used in four different ways:
- To represent a single set of data. For example, a tuple can represent a database record, and its components can represent individual fields of the record.
- To provide easy access to, and manipulation of, a data set. The following example defines a <xref:System.Tuple%607> object that contains population data for New York City for each census from 1950 through 2000. The septuple is passed to the `ComputePopulationChange` method, which calculates the annual rate of change between censuses, as well as the annual rate of change for the entire 60 year period.
[!code-csharp[System.Tuple\`7.Class#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.class/cs/example1.cs#1)]
[!code-vb[System.Tuple\`7.Class#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.class/vb/example1.vb#1)]
- To return multiple values from a method without the use of `out` parameters (in C#) or `ByRef` parameters (in Visual Basic). For example, the previous example returns its computed statistics, along with the city name, in a <xref:System.Tuple%607> object.
- To pass multiple values to a method through a single parameter. For example, the <xref:System.Threading.Thread.Start%28System.Object%29?displayProperty=nameWithType> method has a single parameter that lets you supply one value to the method that the thread executes at startup. If you supply a <xref:System.Tuple%607> object as the method argument, you can supply the thread's startup routine with seven items of data.
]]></format>
</remarks>
<altmember cref="T:System.Tuple" />
<altmember cref="T:System.Tuple`1" />
<altmember cref="T:System.Tuple`2" />
<altmember cref="T:System.Tuple`3" />
<altmember cref="T:System.Tuple`4" />
<altmember cref="T:System.Tuple`5" />
<altmember cref="T:System.Tuple`6" />
<altmember cref="T:System.Tuple`8" />
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public Tuple (T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(!T1 item1, !T2 item2, !T3 item3, !T4 item4, !T5 item5, !T6 item6, !T7 item7) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.#ctor(`0,`1,`2,`3,`4,`5,`6)" />
<MemberSignature Language="VB.NET" Value="Public Sub New (item1 As T1, item2 As T2, item3 As T3, item4 As T4, item5 As T5, item6 As T6, item7 As T7)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7);" />
<MemberSignature Language="F#" Value="new Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt; : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7 -&gt; Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;" Usage="new System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt; (item1, item2, item3, item4, item5, item6, item7)" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="item1" Type="T1" />
<Parameter Name="item2" Type="T2" />
<Parameter Name="item3" Type="T3" />
<Parameter Name="item4" Type="T4" />
<Parameter Name="item5" Type="T5" />
<Parameter Name="item6" Type="T6" />
<Parameter Name="item7" Type="T7" />
</Parameters>
<Docs>
<param name="item1">The value of the tuple's first component.</param>
<param name="item2">The value of the tuple's second component.</param>
<param name="item3">The value of the tuple's third component.</param>
<param name="item4">The value of the tuple's fourth component</param>
<param name="item5">The value of the tuple's fifth component.</param>
<param name="item6">The value of the tuple's sixth component.</param>
<param name="item7">The value of the tuple's seventh component.</param>
<summary>Initializes a new instance of the <see cref="T:System.Tuple`7" /> class.</summary>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can use the static <xref:System.Tuple.Create%60%607%28%60%600%2C%60%601%2C%60%602%2C%60%603%2C%60%604%2C%60%605%2C%60%606%29?displayProperty=nameWithType> method to instantiate a 7-tuple object without having to explicitly specify the types of its components. The following example uses the <xref:System.Tuple.Create%60%607%28%60%600%2C%60%601%2C%60%602%2C%60%603%2C%60%604%2C%60%605%2C%60%606%29?displayProperty=nameWithType> method to instantiate a 7-tuple whose first component is of type <xref:System.String> and whose remaining components are of type <xref:System.Int32>.
[!code-csharp[System.Tuple.Create#13](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple.create/cs/create1.cs#13)]
[!code-vb[System.Tuple.Create#13](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple.create/vb/create1.vb#13)]
This is equivalent to the following call to the <xref:System.Tuple%607.%23ctor%2A> class constructor.
[!code-csharp[System.Tuple.Create#14](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple.create/cs/create1.cs#14)]
[!code-vb[System.Tuple.Create#14](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple.create/vb/create1.vb#14)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Equals">
<MemberSignature Language="C#" Value="public override bool Equals (object obj);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool Equals(object obj) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.Equals(System.Object)" />
<MemberSignature Language="VB.NET" Value="Public Overrides Function Equals (obj As Object) As Boolean" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; override bool Equals(System::Object ^ obj);" />
<MemberSignature Language="F#" Value="override this.Equals : obj -&gt; bool" Usage="tuple.Equals obj" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="obj" Type="System.Object" />
</Parameters>
<Docs>
<param name="obj">The object to compare with this instance.</param>
<summary>Returns a value that indicates whether the current <see cref="T:System.Tuple`7" /> object is equal to a specified object.</summary>
<returns>
<see langword="true" /> if the current instance is equal to the specified object; otherwise, <see langword="false" />.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The `obj` parameter is considered to be equal to the current instance under the following conditions:
- It is a <xref:System.Tuple%607> object.
- Its seven components are of the same types as the current instance.
- Its seven components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component.
## Examples
The following example defines an array of sextuples that contain population data for Los Angeles and New York from 1950 to 2000. The first component of each septuple identifies the city. The first, third, and fourth septuples contain data for New York. The first septuple is a duplicate of the fourth septuple. The third septuple identifies the city as "New York City" instead of "New York". As the example shows, only the fourth septuple is equal to the first septuple.
[!code-csharp[System.Tuple\`7.Equals#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.equals/cs/equals1.cs#1)]
[!code-vb[System.Tuple\`7.Equals#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.equals/vb/equals1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="GetHashCode">
<MemberSignature Language="C#" Value="public override int GetHashCode ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance int32 GetHashCode() cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.GetHashCode" />
<MemberSignature Language="VB.NET" Value="Public Overrides Function GetHashCode () As Integer" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; override int GetHashCode();" />
<MemberSignature Language="F#" Value="override this.GetHashCode : unit -&gt; int" Usage="tuple.GetHashCode " />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Returns the hash code for the current <see cref="T:System.Tuple`7" /> object.</summary>
<returns>A 32-bit signed integer hash code.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Item1">
<MemberSignature Language="C#" Value="public T1 Item1 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T1 Item1" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item1" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item1 As T1" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T1 Item1 { T1 get(); };" />
<MemberSignature Language="F#" Value="member this.Item1 : 'T1" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item1" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T1</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's first component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's first component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item1%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item1%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the first element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the city name, it retrieves the value of the <xref:System.Tuple%607.Item1%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item2">
<MemberSignature Language="C#" Value="public T2 Item2 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T2 Item2" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item2" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item2 As T2" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T2 Item2 { T2 get(); };" />
<MemberSignature Language="F#" Value="member this.Item2 : 'T2" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item2" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T2</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's second component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's second component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item2%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item2%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the second element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 1950, it retrieves the value of the <xref:System.Tuple%607.Item2%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item3">
<MemberSignature Language="C#" Value="public T3 Item3 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T3 Item3" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item3" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item3 As T3" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T3 Item3 { T3 get(); };" />
<MemberSignature Language="F#" Value="member this.Item3 : 'T3" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item3" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T3</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's third component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's third component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item3%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item3%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the third element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 1960, it retrieves the value of the <xref:System.Tuple%607.Item3%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item4">
<MemberSignature Language="C#" Value="public T4 Item4 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T4 Item4" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item4" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item4 As T4" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T4 Item4 { T4 get(); };" />
<MemberSignature Language="F#" Value="member this.Item4 : 'T4" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item4" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T4</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's fourth component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's fourth component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item4%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item4%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the fourth element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 1970, it retrieves the value of the <xref:System.Tuple%607.Item4%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item5">
<MemberSignature Language="C#" Value="public T5 Item5 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T5 Item5" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item5" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item5 As T5" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T5 Item5 { T5 get(); };" />
<MemberSignature Language="F#" Value="member this.Item5 : 'T5" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item5" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T5</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's fifth component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's fifth component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item5%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item5%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the fifth element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 1980, it retrieves the value of the <xref:System.Tuple%607.Item5%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item6">
<MemberSignature Language="C#" Value="public T6 Item6 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T6 Item6" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item6" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item6 As T6" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T6 Item6 { T6 get(); };" />
<MemberSignature Language="F#" Value="member this.Item6 : 'T6" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item6" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T6</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's sixth component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's sixth component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item6%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item6%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the sixth element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 1990, it retrieves the value of the <xref:System.Tuple%607.Item6%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Item7">
<MemberSignature Language="C#" Value="public T7 Item7 { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance !T7 Item7" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.Item7" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Item7 As T7" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property T7 Item7 { T7 get(); };" />
<MemberSignature Language="F#" Value="member this.Item7 : 'T7" Usage="System.Tuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7&gt;.Item7" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T7</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the value of the current <see cref="T:System.Tuple`7" /> object's seventh component.</summary>
<value>The value of the current <see cref="T:System.Tuple`7" /> object's seventh component.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
You can dynamically determine the type of the <xref:System.Tuple%607.Item7%2A> component in one of two ways:
- By calling the `GetType` method on the value that is returned by the <xref:System.Tuple%607.Item7%2A> property.
- By retrieving the <xref:System.Type> object that represents the <xref:System.Tuple%607> object, and retrieving the seventh element from the array that is returned by its <xref:System.Type.GetGenericArguments%2A?displayProperty=nameWithType> method.
## Examples
The following example defines an array of <xref:System.Tuple%607> objects whose components contain population data for three U.S. cities (New York, Chicago, and Los Angeles) from 1950 through 2000. It then displays a table that lists the data. To display the population in 2000, it retrieves the value of the <xref:System.Tuple%607.Item7%2A> property for each <xref:System.Tuple%607> object.
[!code-csharp[System.Tuple\`7.Item1#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.item1/cs/item1.cs#1)]
[!code-vb[System.Tuple\`7.Item1#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.item1/vb/item1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="System.Collections.IStructuralComparable.CompareTo">
<MemberSignature Language="C#" Value="int IStructuralComparable.CompareTo (object other, System.Collections.IComparer comparer);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance int32 System.Collections.IStructuralComparable.CompareTo(object other, class System.Collections.IComparer comparer) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.System#Collections#IStructuralComparable#CompareTo(System.Object,System.Collections.IComparer)" />
<MemberSignature Language="VB.NET" Value="Function CompareTo (other As Object, comparer As IComparer) As Integer Implements IStructuralComparable.CompareTo" />
<MemberSignature Language="C++ CLI" Value=" virtual int System.Collections.IStructuralComparable.CompareTo(System::Object ^ other, System::Collections::IComparer ^ comparer) = System::Collections::IStructuralComparable::CompareTo;" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.IStructuralComparable.CompareTo(System.Object,System.Collections.IComparer)</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="other" Type="System.Object" />
<Parameter Name="comparer" Type="System.Collections.IComparer" />
</Parameters>
<Docs>
<param name="other">An object to compare with the current instance.</param>
<param name="comparer">An object that provides custom rules for comparison.</param>
<summary>Compares the current <see cref="T:System.Tuple`7" /> object to a specified object by using a specified comparer, and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order.</summary>
<returns>A signed integer that indicates the relative position of this instance and <paramref name="other" /> in the sort order, as shown in the following table.
<list type="table"><listheader><term> Value
</term><description> Description
</description></listheader><item><term> A negative integer
</term><description> This instance precedes <paramref name="other" />.
</description></item><item><term> Zero
</term><description> This instance and <paramref name="other" /> have the same position in the sort order.
</description></item><item><term> A positive integer
</term><description> This instance follows <paramref name="other" />.
</description></item></list></returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
This member is an explicit interface implementation. It can be used only when the <xref:System.Tuple%607> instance is cast to an <xref:System.Collections.IStructuralComparable> interface.
This method lets you define customized comparisons of <xref:System.Tuple%607> objects. For example, you can use this method to order <xref:System.Tuple%607> objects based on the value of a specific component.
Although this method can be called directly, it is most commonly called by collection-sorting methods that include <xref:System.Collections.IComparer> parameters to order the members of a collection. For example, it is called by the <xref:System.Array.Sort%28System.Array%2CSystem.Collections.IComparer%29?displayProperty=nameWithType> method and the <xref:System.Collections.SortedList.Add%2A> method of a <xref:System.Collections.SortedList> object that is instantiated by using the <xref:System.Collections.SortedList.%23ctor%28System.Collections.IComparer%29?displayProperty=nameWithType> constructor.
> [!CAUTION]
> The <xref:System.Tuple%607.System%23Collections%23IStructuralComparable%23CompareTo%2A> method is intended for use in sorting operations. It should not be used when the primary purpose of a comparison is to determine whether two objects are equal. To determine whether two objects are equal, call the <xref:System.Tuple%607.System%23Collections%23IStructuralEquatable%23Equals%2A> method.
## Examples
The following example creates an array of <xref:System.Tuple%607> objects that contains population data for three U.S. cities from 1950 to 2000. The septuple's first component is the city name. The remaining five components represent the population at 10-year intervals from 1950 to 2000.
The `PopulationComparer` class provides an <xref:System.Collections.IComparer> implementation that allows the array of septuples to be sorted by any one of its components. Two values are provided to the `PopulationComparer` class in its constructor: The position of the component that defines the sort order, and a <xref:System.Boolean> value that indicates whether the tuple objects should be sorted in ascending or descending order.
The example then displays the elements in the array in unsorted order, sorts them by the third component (the population in 1960) and displays them, and then sorts them by the sixth component (the population in 1990) and displays them.
[!code-csharp[System.Tuple\`7.CompareTo#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.compareto/cs/compareto2.cs#2)]
[!code-vb[System.Tuple\`7.CompareTo#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.compareto/vb/compareto2.vb#2)]
]]></format>
</remarks>
<exception cref="T:System.ArgumentException">
<paramref name="other" /> is not a <see cref="T:System.Tuple`7" /> object.</exception>
<altmember cref="M:System.Tuple`7.System#Collections#IStructuralEquatable#Equals(System.Object,System.Collections.IEqualityComparer)" />
</Docs>
</Member>
<Member MemberName="System.Collections.IStructuralEquatable.Equals">
<MemberSignature Language="C#" Value="bool IStructuralEquatable.Equals (object other, System.Collections.IEqualityComparer comparer);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.IStructuralEquatable.Equals(object other, class System.Collections.IEqualityComparer comparer) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.System#Collections#IStructuralEquatable#Equals(System.Object,System.Collections.IEqualityComparer)" />
<MemberSignature Language="VB.NET" Value="Function Equals (other As Object, comparer As IEqualityComparer) As Boolean Implements IStructuralEquatable.Equals" />
<MemberSignature Language="C++ CLI" Value=" virtual bool System.Collections.IStructuralEquatable.Equals(System::Object ^ other, System::Collections::IEqualityComparer ^ comparer) = System::Collections::IStructuralEquatable::Equals;" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.IStructuralEquatable.Equals(System.Object,System.Collections.IEqualityComparer)</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="other" Type="System.Object" />
<Parameter Name="comparer" Type="System.Collections.IEqualityComparer" />
</Parameters>
<Docs>
<param name="other">The object to compare with this instance.</param>
<param name="comparer">An object that defines the method to use to evaluate whether the two objects are equal.</param>
<summary>Returns a value that indicates whether the current <see cref="T:System.Tuple`7" /> object is equal to a specified object based on a specified comparison method.</summary>
<returns>
<see langword="true" /> if the current instance is equal to the specified object; otherwise, <see langword="false" />.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
This member is an explicit interface member implementation. It can be used only when the <xref:System.Tuple%607> instance is cast to an <xref:System.Collections.IStructuralEquatable> interface.
The <xref:System.Collections.IEqualityComparer.Equals%2A?displayProperty=nameWithType> implementation is called only if other is not `null`, and if it can be successfully cast (in C#) or converted (in Visual Basic) to a <xref:System.Tuple%607> object whose components are of the same types as the current instance. The <xref:System.Tuple%607.System%23Collections%23IStructuralEquatable%23Equals%28System.Object%2CSystem.Collections.IEqualityComparer%29> method first passes the <xref:System.Tuple%607.Item1%2A> values of the <xref:System.Tuple%607> objects to be compared to the <xref:System.Collections.IEqualityComparer.Equals%2A?displayProperty=nameWithType> implementation. If this method call returns `true`, the method is called again and passed the <xref:System.Tuple%607.Item2%2A> values of the two <xref:System.Tuple%607> objects. This continues until the method call returns `false` when it compares a specific pair of `Item` values, or the two <xref:System.Tuple%607.Item7%2A> values are passed to the method.
## Examples
The following example defines a `RateComparer` class that performs a custom test for equality. If the values that are passed to its <xref:System.Collections.IStructuralEquatable.Equals%2A?displayProperty=nameWithType> method are of type <xref:System.Single> or <xref:System.Double>, the method tests for equality by using only up to three fractional digits. Otherwise, it simply calls the `x` parameter's `Equals` method. The example uses this <xref:System.Collections.IEqualityComparer> implementation to determine whether four <xref:System.Tuple%607> objects that contain data on the rate of population change between 1950 and 2000 are equal.
[!code-csharp[System.Tuple\`7.Equals#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.equals/cs/equals2.cs#2)]
[!code-vb[System.Tuple\`7.Equals#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.equals/vb/equals2.vb#2)]
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="System.Collections.IStructuralEquatable.GetHashCode">
<MemberSignature Language="C#" Value="int IStructuralEquatable.GetHashCode (System.Collections.IEqualityComparer comparer);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance int32 System.Collections.IStructuralEquatable.GetHashCode(class System.Collections.IEqualityComparer comparer) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.System#Collections#IStructuralEquatable#GetHashCode(System.Collections.IEqualityComparer)" />
<MemberSignature Language="VB.NET" Value="Function GetHashCode (comparer As IEqualityComparer) As Integer Implements IStructuralEquatable.GetHashCode" />
<MemberSignature Language="C++ CLI" Value=" virtual int System.Collections.IStructuralEquatable.GetHashCode(System::Collections::IEqualityComparer ^ comparer) = System::Collections::IStructuralEquatable::GetHashCode;" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer)</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="comparer" Type="System.Collections.IEqualityComparer" />
</Parameters>
<Docs>
<param name="comparer">An object whose <see cref="M:System.Collections.IEqualityComparer.GetHashCode(System.Object)" /> method calculates the hash code of the current <see cref="T:System.Tuple`7" /> object.</param>
<summary>Calculates the hash code for the current <see cref="T:System.Tuple`7" /> object by using a specified computation method.</summary>
<returns>A 32-bit signed integer hash code.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
This member is an explicit interface member implementation. It can be used only when the <xref:System.Tuple%607> instance is cast to an <xref:System.Collections.IStructuralEquatable> interface.
the method simply wraps a call to the comparer object's <xref:System.Collections.IEqualityComparer.GetHashCode%2A?displayProperty=nameWithType> implementation.
The algorithm used to compute the hash code should return the same hash code for two <xref:System.Tuple%607> objects that are considered to be equal.
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="System.IComparable.CompareTo">
<MemberSignature Language="C#" Value="int IComparable.CompareTo (object obj);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance int32 System.IComparable.CompareTo(object obj) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.System#IComparable#CompareTo(System.Object)" />
<MemberSignature Language="VB.NET" Value="Function CompareTo (obj As Object) As Integer Implements IComparable.CompareTo" />
<MemberSignature Language="C++ CLI" Value=" virtual int System.IComparable.CompareTo(System::Object ^ obj) = IComparable::CompareTo;" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.IComparable.CompareTo(System.Object)</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="obj" Type="System.Object" />
</Parameters>
<Docs>
<param name="obj">An object to compare with the current instance.</param>
<summary>Compares the current <see cref="T:System.Tuple`7" /> object to a specified object and returns an integer that indicates whether the current object is before, after, or in the same position as the specified object in the sort order.</summary>
<returns>A signed integer that indicates the relative position of this instance and <paramref name="obj" /> in the sort order, as shown in the following table.
<list type="table"><listheader><term> Value
</term><description> Description
</description></listheader><item><term> A negative integer
</term><description> This instance precedes <paramref name="obj" />.
</description></item><item><term> Zero
</term><description> This instance and <paramref name="obj" /> have the same position in the sort order.
</description></item><item><term> A positive integer
</term><description> This instance follows <paramref name="obj" />.
</description></item></list></returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
This member is an explicit interface member implementation. It can be used only when the <xref:System.Tuple%607> instance is cast to an <xref:System.IComparable> interface.
This method provides the <xref:System.IComparable.CompareTo%2A?displayProperty=nameWithType> implementation for the <xref:System.Tuple%607> class. Although the method can be called directly, it is most commonly called by the default overloads of collection-sorting methods, such as <xref:System.Array.Sort%28System.Array%29?displayProperty=nameWithType> and <xref:System.Collections.SortedList.Add%2A?displayProperty=nameWithType>, to order the members of a collection.
> [!CAUTION]
> The <xref:System.Tuple%607.System%23IComparable%23CompareTo%2A> method is intended for use in sorting operations. It should not be used when the primary purpose of a comparison is to determine whether two objects are equal. To determine whether two objects are equal, call the <xref:System.Tuple%607.Equals%28System.Object%29?displayProperty=nameWithType> method.
This method uses the default object comparer to compare each component.
## Examples
The following example creates an array of <xref:System.Tuple%607> objects that contain population data for three cities in the United States from 1950 to 2000. The seven components consist of the city name followed by the city's population at 10-year intervals from 1950 to 2000. The example displays the components of each tuple in the array in unsorted order, sorts the array, and then calls the <xref:System.Tuple%607.ToString%2A> method to display each tuple in sorted order. The output shows that the array has been sorted by name, which is the first component. Note that the example does not directly call the <xref:System.Tuple%607.System%23IComparable%23CompareTo%28System.Object%29> method. This method is called implicitly by the <xref:System.Array.Sort%28System.Array%29> method for each element in the array.
[!code-csharp[System.Tuple\`7.CompareTo#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.compareto/cs/compareto1.cs#1)]
[!code-vb[System.Tuple\`7.CompareTo#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.compareto/vb/compareto1.vb#1)]
]]></format>
</remarks>
<exception cref="T:System.ArgumentException">
<paramref name="obj" /> is not a <see cref="T:System.Tuple`7" /> object.</exception>
</Docs>
</Member>
<Member MemberName="System.Runtime.CompilerServices.ITuple.Item">
<MemberSignature Language="C#" Value="object System.Runtime.CompilerServices.ITuple.Item[int index] { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance object System.Runtime.CompilerServices.ITuple.Item(int32)" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.System#Runtime#CompilerServices#ITuple#Item(System.Int32)" />
<MemberSignature Language="VB.NET" Value=" ReadOnly Property Item(index As Integer) As Object Implements ITuple.Item" />
<MemberSignature Language="C++ CLI" Value="property System::Object ^ System::Runtime::CompilerServices::ITuple::Item[int] { System::Object ^ get(int index); };" />
<MemberSignature Language="F#" Usage="System.Runtime.CompilerServices.ITuple.Item" />
<MemberType>Property</MemberType>
<Implements>
<InterfaceMember>P:System.Runtime.CompilerServices.ITuple.Item(System.Int32)</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Object</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="index" Type="System.Int32" Index="0" FrameworkAlternate="netcore-2.0;netcore-2.1;netcore-2.2;netcore-3.0;netframework-4.7.1;netframework-4.7.2;netframework-4.8;netstandard-2.1" />
</Parameters>
<Docs>
<param name="index">The index of the specified <see langword="Tuple" /> element. <paramref name="index" /> can range from 0 to 6.</param>
<summary>Gets the value of the specified <see langword="Tuple" /> element.</summary>
<value>The value of the <see langword="Tuple" /> element at the specified position.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The <xref:System.Tuple%607.System%23Runtime%23CompilerServices%23ITuple%23Item%2A?displayProperty=nameWithType> property is an explicit interface implementation. To call it, you must cast or convert the <xref:System.Tuple%607> object to an <xref:System.Runtime.CompilerServices.ITuple> interface object.
]]></format>
</remarks>
<exception cref="T:System.IndexOutOfRangeException">
<paramref name="index" /> is less than 0 or greater than 6.</exception>
</Docs>
</Member>
<Member MemberName="System.Runtime.CompilerServices.ITuple.Length">
<MemberSignature Language="C#" Value="int System.Runtime.CompilerServices.ITuple.Length { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance int32 System.Runtime.CompilerServices.ITuple.Length" />
<MemberSignature Language="DocId" Value="P:System.Tuple`7.System#Runtime#CompilerServices#ITuple#Length" />
<MemberSignature Language="VB.NET" Value=" ReadOnly Property Length As Integer Implements ITuple.Length" />
<MemberSignature Language="C++ CLI" Value="property int System::Runtime::CompilerServices::ITuple::Length { int get(); };" />
<MemberSignature Language="F#" Usage="System.Runtime.CompilerServices.ITuple.Length" />
<MemberType>Property</MemberType>
<Implements>
<InterfaceMember>P:System.Runtime.CompilerServices.ITuple.Length</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the number of elements in the <see langword="Tuple" />.</summary>
<value>7, the number of elements in a <see cref="T:System.Tuple`7" /> object.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The <xref:System.Tuple%607.System%23Runtime%23CompilerServices%23ITuple%23Length%2A> property is an explicit interface implementation. To call it, you must cast or convert the <xref:System.Tuple%607> object to an <xref:System.Runtime.CompilerServices.ITuple> interface object.
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="ToString">
<MemberSignature Language="C#" Value="public override string ToString ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
<MemberSignature Language="DocId" Value="M:System.Tuple`7.ToString" />
<MemberSignature Language="VB.NET" Value="Public Overrides Function ToString () As String" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; override System::String ^ ToString();" />
<MemberSignature Language="F#" Value="override this.ToString : unit -&gt; string" Usage="tuple.ToString " />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.0.20.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.2.0.0</AssemblyVersion>
<AssemblyVersion>4.2.1.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Returns a string that represents the value of this <see cref="T:System.Tuple`7" /> instance.</summary>
<returns>The string representation of this <see cref="T:System.Tuple`7" /> object.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The string returned by this method takes the form (*Item1*, *Item2*, *Item3*, *Item4*, `Item5, Item6, Item7`), where *Item1*, *Item2*, *Item3*, *Item4*, *Item5*, *Item6*, and *Item7* represent the values of the <xref:System.Tuple%607.Item1%2A>, <xref:System.Tuple%607.Item2%2A>, <xref:System.Tuple%607.Item3%2A>, <xref:System.Tuple%607.Item4%2A>, <xref:System.Tuple%607.Item5%2A>, <xref:System.Tuple%607.Item6%2A>, and <xref:System.Tuple%607.Item7%2A> properties, respectively. If any of the property values is `null`, it is represented as <xref:System.String.Empty?displayProperty=nameWithType>.
## Examples
The following example defines a <xref:System.Tuple%607> object that contains population data for New York City for each census from 1950 through 2000. The components of the sextuple are then displayed by a call to the <xref:System.Tuple%607.ToString%2A> method.
[!code-csharp[System.Tuple\`7.ToString#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.tuple`7.tostring/cs/tostring1.cs#1)]
[!code-vb[System.Tuple\`7.ToString#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.tuple`7.tostring/vb/tostring1.vb#1)]
]]></format>
</remarks>
</Docs>
</Member>
</Members>
</Type>
You can’t perform that action at this time.