0

我需要将字符串数据以表格的形式存储在内存中,列是固定的,但行会被添加到末尾。

string[][]如果我事先知道行,我想我可以使用二维字符串数组,但事实并非如此。

我目前已经创建了一个包含 3 个字段的自定义类并将它们存储在一个列表中,但我意识到这不是很优雅的解决方案,数据看起来像这样

艺术家名 1、专辑名 1、文件名
1 艺术家名 2、专辑名 2、文件名 2
艺术家名 3、专辑名 3、文件名 3
等等。

哪种数据结构最适合这个?

4

3 回答 3

1

你有很多选择取决于你想用它做什么。

// Usefull if it's not all strings
List<Tuple<int, string, string>> 

或者

// A list of array.
List<string[]> 
于 2012-11-04T14:46:14.823 回答
1

您应该创建一个自定义类:

public class Song 
{
    public string ArtistName { get; set; }
    public string AlbumName { get; set; }
    public string Filename { get; set; }
}

然后你应该有一个列表:

var songs = new List<Song>();

这就是类的用途——不要回避它们。

如果您需要将每首歌曲作为字符串“获取”,您可以.ToString覆盖Song

public override string ToString()
{
    return string.Format("{0}, {1}, {2}", ArtistName, AlbumName, Filename);
}
于 2012-11-04T14:56:06.320 回答
0

您可以使用List<string[]>List<List<string>>。第一种情况将允许您添加任意数量的行,并且列将被固定。第二种解决方案更加灵活,可以让您添加任意数量的列。

List<string[]> list = new List<string[]>();
string[] row = new string[3];
row[0] = "artist-name1";
row[1] = "album-name1";
row[2] = "filename1";
list.Add(row);

或者

List<List<string>> list = new List<List<string>>();
List<string> row = new List<string>();
row.Add("artist-name1");
row.Add("album-name1");
row.Add("filename1");
list.Add(row);
于 2012-11-04T14:46:00.577 回答