0

さまざまなタイプの 2 次元動的配列を生成するこのコードを見つけましたが、たとえば 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]

2 番目の配列の 3 番目のオブジェクトを取得しますが、オブジェクト配列を使用しているため、これを適切な型にキャストする必要があることに注意してください。

代わりに、このアプローチをお勧めします。データを保持する独自のクラスを作成します。そうすれば、オブジェクトを適切な型にキャストする必要がなくなります。

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 に答える