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

## Definition

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

public:
property T1 Item1 { T1 get(); };
public T1 Item1 { get; }
member this.Item1 : 'T1
Public ReadOnly Property Item1 As T1

#### Property Value

T1

The value of the current Tuple<T1,T2,T3> object's first 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 Item1 property contains the number of cases.

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 Item1 component in one of two ways:

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

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