[英]c# How to create a dynamic list/array
實際上,我有這個:
public ArrayList _albumId;
public ArrayList _albumName;
public ArrayList _nbPhotos;
當我有一張新專輯時,我在每個ArrayList上添加一行。 你知道只用一個列表或數組做些什么嗎? 謝謝
首先,不要使用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>();
為什么要將有關同一事物的信息分成多個數組?
創建一個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);
保留有關封裝在該對象中的對象的信息,而不是散布在其他斷開連接的變量中。
作為類比,考慮在停車場停車的行為。 通過一系列物品,停車場擁有一系列空間,每輛車都進入一個空間。 相反,使用單獨的值數組,停放汽車的過程是:
對封裝對象進行建模更有意義。
使用通用列表。
為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" };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.