从结构的ArrayList获取参数

时间:2014-03-05 18:10:38

标签: c# arraylist parameters struct

我想创建一个arraylist,其中我将存储描述mp3播放器的结构,我想在for循环中访问所述参数,以便我可以在Console中打印出来。

我的问题是访问for循环中的参数,有人能指出我正确的方向吗?

这也是作业,所以arraylist和struct是必需的。

static public void mp3speler()
    {

        mp3 speler1 = new mp3(1, 1, "a", "b", "c");
        mp3 speler2 = new mp3(2, 1, "a", "b", "c");
        mp3 speler3 = new mp3(3, 1, "a", "b", "c");
        mp3 speler4 = new mp3(4, 1, "a", "b", "c");
        mp3 speler5 = new mp3(5, 1, "a", "b", "c");

        ArrayList mp3Array = new ArrayList();
        mp3Array.Add(speler1);
        mp3Array.Add(speler2);
        mp3Array.Add(speler3);
        mp3Array.Add(speler4);
        mp3Array.Add(speler5);


        for (int i = 0; i < mp3Array.Count; i++)
        {
            string placeHolder = "0"; //= ((mp3)mp3Array[0].ID);
            Console.WriteLine(@"MP3 Speler {0}
Make: {1}
Model: {2}
MBSize: {3}
Price: {4}", placeHolder, placeHolder, placeHolder, placeHolder, placeHolder);
        }
    }

    struct mp3
    {
        public int ID, MBSize;
        public string Make, Model, Price;

        public mp3(int ID, int MBSize, string Make, string Model, string Price)
        {
            this.ID = ID;
            this.MBSize = MBSize;
            this.Make = Make;
            this.Model = Model;
            this.Price = Price;
        }
    }

1 个答案:

答案 0 :(得分:4)

  1. 使用通用List<T>代替ArrayList。每次添加或从集合中获取项目时,它都会阻止您的结构打包/取消装箱。

    List<mp3> mp3List = new List<mp2>();
    mp3List.Add(speler1);
    mp3List.Add(speler2);
    mp3List.Add(speler3);
    mp3List.Add(speler4);
    mp3List.Add(speler5);
    
  2. 使用索引器访问权限从List<T>

    获取给定索引的项目
    for (int i = 0; i < mp3List.Count; i++)
    {
        Console.WriteLine(@"MP3 Speler {0} Make: {1} Model: {2} MBSize: {3} Price: {4}",
             mp3List[i].ID, mp3List[i].Make, mp3List[i].Model, mp3List[i].MbSize, mp3List[i].Price);
     }
    
  3. 您也可以使用foreach代替for

    foreach (var item in mp3List)
    {
        Console.WriteLine(@"MP3 Speler {0} Make: {1} Model: {2} MBSize: {3} Price: {4}",
             item.ID, item.Make, item.Model, item.MbSize, item.Price);
     }