1

在我的程序中,我有一个名为 Album 的课程。我有一个我的专辑对象在创建时进入的数组。如果他们愿意,我需要让用户稍后更改专辑的专辑名称。如果他们愿意,我还需要让用户从数组中删除专辑。据我了解,您不能只从数组中删除对象,因此将它们存储在列表而不是数组中会很好。

根据我对 Lists 的理解(在此之前我没有使用过它们),如果我想稍后更改 Album 对象中的变量,我不能在创建时将 Album 对象放入 List 而不是 Array 中。如果我想更改专辑名称,我也不能只删除并用列表中的新对象替换专辑对象,因为专辑对象将存储一个数组(myMusics),如果我这样做会丢失。

所以我的问题是,我如何允许用户对 Album 对象进行更改,同时让他们删除它们?我想我必须将它们存储的数组更改为列表。然后从列表中删除对象,然后将列表更改回相同的数组。它是否正确?如果这是正确的方法,我将如何做到这一点?

此外,如果有帮助/有所作为,包含专辑的数组将在 Form1 中创建,专辑对象将从表单 1 中删除,但专辑对象中专辑名称的更改将在 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];
    }
}
4

2 回答 2

0

我建议你一直存储MusicList<Music>与其他语言不同的C# List是,它实际上是一个具有恒定索引操作的动态可扩展数组[]

请记住,这意味着从列表中删除除最后一个以外的任何元素都意味着需要额外的操作来移动元素。如果您不关心音乐中的顺序,List我建议在删除专辑之前将其与中的最后一个交换,List然后删除中的最后一个元素List

于 2013-04-09T07:24:14.883 回答
0

根据我对 Lists 的理解(在此之前我没有使用过它们),如果我想稍后更改 Album 对象中的变量,我不能在创建时将 Album 对象放入 List 而不是 Array 中。

这仅适用于structs。由于您使用的是(可变),因此您可以在对象存储在List<Album>.

所以你绝对应该使用List.

除非您希望能够按某个字段查找相册,例如按AlbumName. 如果是这样,您可以使用 a Dictionary<string, Album>and useAlbumName作为密钥。

于 2013-04-09T07:27:25.407 回答