实际上,我有这个:
public ArrayList _albumId;
public ArrayList _albumName;
public ArrayList _nbPhotos;
当我有一张新专辑时,我会在每个ArrayList上添加一行。 你知道只用一个列表或数组做些什么吗? 感谢
答案 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);
保留有关封装在该对象中的对象的信息,而不是散布在其他断开连接的变量中。
作为类比,考虑在停车场停车的行为。通过一系列物品,停车场拥有一系列空间,每辆车都进入一个空间。相反,使用单独的数值数组,停车的过程是:
对封装对象进行建模更有意义。
答案 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" };