2017-02-06 118 views
2

其實,我有這樣的:C#如何創建一個動態列表/陣列

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

當我有一個新的專輯,我想補充每個ArrayList的一條線。 只有一個列表或數組,你知道一件事嗎? 謝謝

+0

這將是更好地爲您使用通用'List'而不是'ArrayList' 。 'List'具有類型安全性。 –

+0

創建一個三個字段,然後列表的類專輯 TaW

+0

不應該讓相冊成爲具有這些屬性的類,然後您可以有列表? –

回答

8

首先,不要使用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>(); 
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. 重新建立汽車。

建模封裝對象只是更有意義。

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" };