c#如何创建动态列表/数组

时间:2017-02-06 13:24:12

标签: c# .net arrays list

实际上,我有这个:

public ArrayList _albumId;
public ArrayList _albumName;
public ArrayList _nbPhotos;

当我有一张新专辑时,我会在每个ArrayList上添加一行。 你知道只用一个列表或数组做些什么吗? 感谢

3 个答案:

答案 0 :(得分:9)

首先,请勿使用ArrayList - 使用通用List<T>

第二 - 不要为相册的每个属性设置单独的列表,而是创建包含所有必需属性的Album类,并将相册保留在List<Album>中:

public class Album
{
   public int Id { get; set; }
   public string Name {get; set; }
   public int CountOfPhotos {get; set; }
}

添加新相册:

_albums.Add(new Album { Id = 2, Name = "Foo", CountOfPhotos = 42 });

将专辑列表声明为

List<Album> _albums = new List<Album>();

答案 1 :(得分:2)

为什么要将有关同一事物的信息分成多个数组?

创建一个Album对象。类似的东西:

public class Album
{
    public int ID { get; set; }
    public string Name { get; set; }
    // other properties, etc.
}

并列出相册

var albums = new List<Album>();

添加新相册时,请添加新相册:

var newAlbum = new Album
{
    ID = someValue,
    Name = anotherValue
}
albums.Add(newAlbum);

保留有关封装在该对象中的对象的信息,而不是散布在其他断开连接的变量中。

作为类比,考虑在停车场停车的行为。通过一系列物品,停车场拥有一系列空间,每辆车都进入一个空间。相反,使用单独的数值数组,停车的过程是:

  1. 将车拆开。
  2. 将轮胎放在轮胎空间,窗户空间的窗户,门空间的门等等。
  3. 如果您想要让车回来,请到处寻找所有空间并找到您的零件。 (希望你找到合适的人。)
  4. 重新制造汽车。
  5. 对封装对象进行建模更有意义。

答案 2 :(得分:1)

使用通用列表。

为smaple定义一个类:

public class Album
{
   public int Id { get; set; }
   public string Name { get; set; }
   public string[] AlbumPhotos { get; set; }
}

并在通用列表中使用它:

var albums = new List<Album>();

albums.Add(new Album() { Id = 1, Name = "Ramones" };
albums.Add(new Album() { Id = 2, Name = "Leave Home" };
albums.Add(new Album() { Id = 3, Name = "Rocket To Russia" };