1

我不想要任何排序或任何花哨的东西。我只想要 2 列左边的名称和右边的数字。

像这样的东西:

string/int[,] myArray = new string/int[,]();

每个字符串都会有一个对应的 int。但我不希望它用于排序或任何事情。我知道我可以使用字典和其他我知道如何使用的高级方法。我想变得简单我想以最简单的形式看看我如何制作一个像这样的 2 种类型的数组。我能想到的最简单的方法是只使用对象,然后稍后显式转换。有没有更简单的方法来做到这一点?

4

3 回答 3

7

最简单的方法是使用Tuple类。您可以使用Tuple泛型参数来组合类以形成元组。例如,Tuple<string, int>Tuple<string, int, int?, char>是 2 参数版本的文档。在您描述的情况下,您可能需要一个 type 的实例Tuple<string, int>[]

Tuple您可以使用以下ItemX方法访问元素: myTuple.Item1myTuple.Item2等。

为了实际创建元组,我建议使用这些Tuple.Create方法。例如:Tuple.Create("hello", 1)将返回一个Tuple<string, int>项目设置正确。这些Create方法允许您省略泛型参数。

作为旁注,您提到您不需要排序。Tuple<string, int>您可以通过对 new 执行 LINQ 查询(它实现IEnumerable<Tuple<string, int>>,因此您可以IEnumerable在其上执行 LINQ 的扩展)轻松获得任意排序。例如,为了按int部分排序,然后是元组的 `string 部分,你可以这样做:

 myTupleArray.OrderBy(t => t.Item2).ThenBy(t => t.Item2);

另请查看OrderByDescendingThenByDescending以获取更多选项。

于 2013-06-21T02:29:33.433 回答
1

为什么不使用Object类。

Object[] myarray = {string1,int1,string2,int2}

如果你想分组stringsints你可以这样做:

Object[][] myarray = { {string1,int1}, {string2,int2} };
myarray[0][0] = string1 and myarray[0][1]=int1
于 2013-06-21T03:12:13.313 回答
1

元组将是一个很好的选择,就像本也说的那样,但如果你只想使用数组来实现这个结果,可能是这样的..

            Array[] m = new Array[2];

            m[0] = new string[10]{"2","5","7","9","12","53","11","36","39","4"};
            m[1] = new int[10] { 2, 5, 7, 9, 12, 53, 11, 36, 39, 4 };

            int val = (int)m[1].GetValue(3);
            string str = (string)m[0].GetValue(3);
于 2013-06-21T03:24:31.890 回答