如何在C#中将元组转换为数组?

时间:2016-09-05 18:12:32

标签: c# arrays multidimensional-array casting tuples

我找不到任何关于此的内容所以我不确定它是否可行但是我有一个包含二维数组中元素坐标的元组。我希望能够找到二维数组中元素之间的距离,并且要做到这一点我想要一维数组形式的元素位置(我不确定更好的方法去做这个)。那么可以将元组变成数组吗?

这是数组:

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

这是我用来获取多维数组中元素坐标的方法:

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);
    }

3 个答案:

答案 0 :(得分:1)

如果我理解你,你想将Tuple<int, int>转换为数组......

正如我在问题评论中提到的那样,MSDN documentation确切地解释了Tuple<T1, T2>是什么。 2元组是KeyValuePair<TKey, TValue>结构......

//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};

有关详细信息,请参阅:
Introduction to Tuples in .NET Framework 4.0
Overview: Working with Immutable Data

答案 1 :(得分:0)

在C#7.0或更高版本中:

var TestTuple =  (123, "apple", 321) ;

object[] values = TestTuple.ToTuple()
                  .GetType()
                  .GetProperties()
                  .Select(property => property.GetValue(TestTuple.ToTuple()))
                  .ToArray();

答案 2 :(得分:0)

#song-container {
    text-align: center;
    margin: 20px;
}
#song {
    color: #000;
    font-size: calc(3.5vw - 102px / 47 / (99/188));
    font-family: "Courier New",monospace,Courier;
    white-space: pre;
    word-break: break-all;
    text-align: left;
    display: inline-block;
}

#song > span { /* Chords*/
    color: #007fbf;
    cursor: pointer;
}

ITuple Interface (System.Runtime.CompilerServices) | Microsoft Docs