在我的程序中,我有一个叫做相册的类。我有一个数组,我的相册对象在创建时放入其中。如果用户愿意,我需要让用户稍后更改相册的albumName。如果用户愿意,我还需要让他们从Array中删除相册。据我所知,你不能只是从数组中删除对象,所以如果它们存储在一个列表中,而不是数组中,那就更好了。
根据我对列表的理解(我在此之前没有使用过它们),如果我想在稍后更改Album对象中的变量,我不能在创建时将Album对象放入List而不是Array中。如果我想更改数组,我也不能简单地删除并替换列表中的新的albumName对象,因为如果我这样做,相册对象将存储一个数组(myMusics),如果我这样做了,它将丢失。
所以我的问题是,我如何允许用户在修改相册对象的同时删除它们?我想我必须将存储它们的数组改为一个列表。然后从列表中删除对象,然后将列表中的对象改回原来的数组。这是正确的吗?如果这是正确的方式,我该如何做呢?
此外,如果它有帮助/有作用,则包含专辑的数组将在Form1中创建,专辑对象将从表单1中删除,但对专辑对象中的albumName的更改将在Form2中发生。
任何帮助都是非常感谢的。我对c#的使用还很陌生,所以如果能给出一个代码示例来帮助我理解,那就太棒了。谢谢。
相册类:
public class Album
{
public string albumName;
private int totalMusics;
private const int MAX_MUSICS = 100;
private Music[] myMusics;
public Album(string albumName)
{
this.albumName = albumName;
totalMusics = 0;
myMusics = new Music[MAX_MUSICS];
}
}发布于 2013-04-09 15:27:25
根据我对列表的理解(我在此之前没有使用过),如果我想在稍后更改Album对象中的变量,我不能在创建时将Album对象放入列表而不是数组中。
这只适用于结构。由于您使用的是(可变)类,因此您将能够在对象存储在List<Album>中时更改它们的属性。
所以你绝对应该使用List。
除非你想要能够通过某些字段来查找专辑,例如通过AlbumName。如果是这样的话,您可以使用Dictionary<string, Album>并使用AlbumName作为密钥。
发布于 2013-04-09 15:24:15
我建议你一直将Music存储在List<Music>中。与C#中的其他语言不同,List实际上是一个具有常量索引操作[]的动态可扩展数组。
但请记住,这意味着从列表中删除除最后一个元素之外的任何元素都意味着要移动这些元素的额外操作。如果您不关心音乐在List中的顺序,我建议您在删除专辑之前,将其与List中的最后一个交换,然后删除List中的最后一个元素。
https://stackoverflow.com/questions/15895739
复制相似问题