user3124306 user3124306 - 11 months ago 140
C# Question

How to turn a Tuple into an Array in C#?

I can't find anything about this so I'm not sure if it is possible but I have a tuple that has the coordinates of an element in a two-dimensional array. I want to be able to find the distance between elements in a two-dimensional array and to do this I want the position of the element in array form (I'm not sure of a better way to do this). So is it possible to turn a Tuple into an array?

This is the array:

string[,] keypad = new string[4, 3]
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
{".", "0", " "}

This is the method I used to get the coordinates of an element in a multidimensional array:

public static Tuple<int, int> CoordinatesOf<T>(this T[,] matrix, T value)
int w = matrix.GetLength(0); // width
int h = matrix.GetLength(1); // height

for (int x = 0; x < w; ++x)
for (int y = 0; y < h; ++y)
if (matrix[x, y].Equals(value))
return Tuple.Create(x, y);

return Tuple.Create(-1, -1);

Edit: To people who have voted this question down, could you explain how my question 'does not show any research effort; it is unclear or not useful'? I am a beginner at C# and I did, in fact, try to find the answer to my question but I couldn't find my question. I would like to know so that I don't repeat this in the future.

Answer Source

If i understand you well, you want to convert Tuple<int, int> into an array...

As i mentioned in the comment to the question, MSDN documentation explains exactly what Tuple<T1, T2> is. A 2-tuple is a pair or KeyValuePair<TKey, TValue> structure...

//create a 2-tuple
Tuple<int, int> t = Tuple.Create(5,11);
//pass Item1 and Item2 to create an array
int[] arr = new int[]{t.Item1, t.Item2};

For further details, please see:
Introduction to Tuples in .NET Framework 4.0
Overview: Working with Immutable Data