簡體   English   中英

c#如何創建動態列表/數組

[英]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);

保留有關封裝在該對象中的對象的信息,而不是散布在其他斷開連接的變量中。


作為類比,考慮在停車場停車的行為。 通過一系列物品,停車場擁有一系列空間,每輛車都進入一個空間。 相反,使用單獨的值數組,停放汽車的過程是:

  1. 把車拆開。
  2. 將輪胎放在輪胎空間,窗戶空間的窗戶,門空間的門等。
  3. 如果您想要將車開回去,請到處尋找所有空間並找到您的零件。 (希望你找到合適的人。)
  4. 重新建造汽車。

對封裝對象進行建模更有意義。

使用通用列表。

為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM