我不想要任何排序或任何花哨的东西。我只想要 2 列左边的名称和右边的数字。
像这样的东西:
string/int[,] myArray = new string/int[,]();
每个字符串都会有一个对应的 int。但我不希望它用于排序或任何事情。我知道我可以使用字典和其他我知道如何使用的高级方法。我想变得简单我想以最简单的形式看看我如何制作一个像这样的 2 种类型的数组。我能想到的最简单的方法是只使用对象,然后稍后显式转换。有没有更简单的方法来做到这一点?
我不想要任何排序或任何花哨的东西。我只想要 2 列左边的名称和右边的数字。
像这样的东西:
string/int[,] myArray = new string/int[,]();
每个字符串都会有一个对应的 int。但我不希望它用于排序或任何事情。我知道我可以使用字典和其他我知道如何使用的高级方法。我想变得简单我想以最简单的形式看看我如何制作一个像这样的 2 种类型的数组。我能想到的最简单的方法是只使用对象,然后稍后显式转换。有没有更简单的方法来做到这一点?
最简单的方法是使用Tuple
类。您可以使用Tuple
泛型参数来组合类以形成元组。例如,Tuple<string, int>
或Tuple<string, int, int?, char>
。 这是 2 参数版本的文档。在您描述的情况下,您可能需要一个 type 的实例Tuple<string, int>[]
。
Tuple
您可以使用以下ItemX
方法访问元素: myTuple.Item1
、myTuple.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);
另请查看OrderByDescending
和ThenByDescending
以获取更多选项。
为什么不使用Object
类。
Object[] myarray = {string1,int1,string2,int2}
如果你想分组strings
,ints
你可以这样做:
Object[][] myarray = { {string1,int1}, {string2,int2} };
myarray[0][0] = string1 and myarray[0][1]=int1
元组将是一个很好的选择,就像本也说的那样,但如果你只想使用数组来实现这个结果,可能是这样的..
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);