2013-06-25 3 views
0

Я нашел этот код для создания двумерного динамического массива с разными типами, но как я могу получить доступ, например: 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

Почему вы даже хотите этот код, который вы нашли? – musefan

ответ

3

Вы можете использовать его как это:

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

получить третий объект во втором массиве, но имейте в виду, что вы должны закинуть к соответствующему типу, так как вы используете массив объектов ,

Я бы скорее рекомендовал этот подход, создав свой собственный класс, который будет хранить ваши данные. Таким образом вам не нужно будет заботиться о том, чтобы объект был привязан к соответствующим типам.

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

, а затем использовать список Generic

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); 
} 
Смежные вопросы