访问具有不同类型的二维动态数组

时间:2013-06-25 11:05:57

标签: c# arrays

我发现此代码生成具有不同类型的二维动态数组,但我如何访问例如:ar [0] - > o [0]?

THX!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;

namespace Collections
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList ar = new ArrayList();
            object[] o = new object[3];
            // Add 10 items to arraylist
            for (int i = 0; i < 10; i++)
            {
                // Create some sample data to add to array of objects of different types.
                Random r = new Random();
                o[0] = r.Next(1, 100);
                o[1] = "a" + r.Next(1,100).ToString();
                o[2] = r.Next(1,100);
                ar.Add(o);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

你可以像这样使用它:

((object[])ar[1])[2]

获取第二个数组中的第三个对象,但请注意,由于使用的是对象数组,因此必须将其强制转换为正确的类型。

我宁愿推荐这种方法,创建自己的类来保存数据。这样您就不需要将对象转换为正确的类型了。

public class Randoms
{
     public int Rand1 { get; set; }
     public string Rand2 { get; set; }
     public int Rand3 { get; set; }
}

然后使用通用列表

List<Randoms> = new List<Randoms>();

所以最后代码看起来像这样:

List<Randoms> ar = new List<Randoms>();
// Add 10 items to list
for (int i = 0; i < 10; i++)
{
       Randoms rand = new Randoms();
       Random r = new Random();
       rand.Rand1 = r.Next(1, 100);
       rand.Rand2 = "a" + r.Next(1, 100).ToString();
       rand.Rand3 = r.Next(1, 100);
       ar.Add(rand);
}