# Tuple<T1,T2,T3>.Item2 Property

## Definition

Gets the value of the current Tuple<T1,T2,T3> object's second component.

``````public:
property T2 Item2 { T2 get(); };``````
``public T2 Item2 { get; }``
``member this.Item2 : 'T2``
``Public ReadOnly Property Item2 As T2``

#### Property Value

T2

The value of the current Tuple<T1,T2,T3> object's second component.

## Examples

The following example defines an array of Tuple<T1,T2,T3> objects that contain the names of students, their average test scores, and the number of tests taken. The array is passed to the `ComputeStatistics` method, which calculates the mean score, standard deviation, and number of cases from which the statistics are calculated. These values are stored in the Tuple<T1,T2,T3> object that is returned by the `ComputeStatistics` method. The Item2 property contains the mean test score.

``````using System;

public class Example
{
public static void Main()
{
Tuple<string, double, int>[] scores =
{ Tuple.Create("Jack", 78.8, 8),
Tuple.Create("Abbey", 92.1, 9),
Tuple.Create("Dave", 88.3, 9),
Tuple.Create("Sam", 91.7, 8),
Tuple.Create("Ed", 71.2, 5),
Tuple.Create("Penelope", 82.9, 8),
Tuple.Create("Linda", 99.0, 9),
Tuple.Create("Judith", 84.3, 9) };
var result = ComputeStatistics(scores);
Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})",
result.Item2, result.Item3, result.Item1);
}

private static Tuple<int, double, double> ComputeStatistics(Tuple<string, double, int>[] scores)
{
int n = 0;
double sum = 0;

// Compute the mean.
foreach (var score in scores)
{
n += score.Item3;
sum += score.Item2 * score.Item3;
}
double mean = sum / n;

// Compute the standard deviation.
double ss = 0;
foreach (var score in scores)
{
ss = Math.Pow(score.Item2 - mean, 2);
}
double sd = Math.Sqrt(ss/scores.Length);
return Tuple.Create(scores.Length, mean, sd);
}
}
// The example displays the following output:
//       Mean score: 87.02 (SD=0.96) (n=8)
``````
``````open System

let computeStatistics (scores: Tuple<string, double, int>[]) =
let mutable n = 0
let mutable sum = 0.

// Compute the mean.
for score in scores do
n <- n + score.Item3
sum <- sum + score.Item2 * double score.Item3
let mean = sum / double n

// Compute the standard deviation.
let mutable ss = 0.
for score in scores do
ss <- (score.Item2 - mean) ** 2.
let sd = sqrt (ss / double scores.Length)
Tuple.Create(scores.Length, mean, sd)

let scores =
[| Tuple.Create("Jack", 78.8, 8)
Tuple.Create("Abbey", 92.1, 9)
Tuple.Create("Dave", 88.3, 9)
Tuple.Create("Sam", 91.7, 8)
Tuple.Create("Ed", 71.2, 5)
Tuple.Create("Penelope", 82.9, 8)
Tuple.Create("Linda", 99.0, 9)
Tuple.Create("Judith", 84.3, 9) |]
let result = computeStatistics scores
printfn \$"Mean score: {result.Item2:N2} (SD={result.Item3:N2}) (n={result.Item1})"
// The example displays the following output:
//       Mean score: 87.02 (SD=0.96) (n=8)
``````
``````Module Example
Public Sub Main()
Dim scores() =
{ Tuple.Create("Jack", 78.8, 8),
Tuple.Create("Abbey", 92.1, 9),
Tuple.Create("Dave", 88.3, 9),
Tuple.Create("Sam", 91.7, 8),
Tuple.Create("Ed", 71.2, 5),
Tuple.Create("Penelope", 82.9, 8),
Tuple.Create("Linda", 99.0, 9),
Tuple.Create("Judith", 84.3, 9) }
Dim result = ComputeStatistics(scores)
Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})",
result.Item2, result.Item3, result.Item1)
End Sub

Private Function ComputeStatistics(scores() As Tuple(Of String, Double, Integer)) _
As Tuple(Of Integer, Double, Double)
Dim n As Integer = 0
Dim sum As Double = 0

' Compute the mean.
For Each score In scores
n+= score.Item3
sum += score.Item2 * score.Item3
Next
Dim mean As Double = sum / n

' Compute the standard deviation.
Dim ss As Double = 0
For Each score In scores
ss = Math.Pow(score.Item2 - mean, 2)
Next
Dim sd As Double = Math.Sqrt(ss/scores.Length)
Return Tuple.Create(scores.Length, mean, sd)
End Function
End Module
' The example displays the following output:
'       Mean score: 87.02 (SD=0.96) (n=8)
``````

## Remarks

You can dynamically determine the type of the Item2 component in one of two ways:

• By calling the `GetType` method on the value that is returned by the Item2 property.

• By retrieving the Type object that represents the Tuple<T1,T2,T3> object, and retrieving the second element from the array that is returned by its Type.GetGenericArguments method.