我发现此代码生成具有不同类型的二维动态数组,但我如何访问例如: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);
}
}
}
}
答案 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);
}