0

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

谢谢!

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

1 回答 1

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);
}
于 2013-06-25T11:10:16.670 回答