我需要将字符串数据以表格的形式存储在内存中,列是固定的,但行会被添加到末尾。
string[][]
如果我事先知道行,我想我可以使用二维字符串数组,但事实并非如此。
我目前已经创建了一个包含 3 个字段的自定义类并将它们存储在一个列表中,但我意识到这不是很优雅的解决方案,数据看起来像这样
艺术家名 1、专辑名 1、文件名
1 艺术家名 2、专辑名 2、文件名 2
艺术家名 3、专辑名 3、文件名 3
等等。
哪种数据结构最适合这个?
我需要将字符串数据以表格的形式存储在内存中,列是固定的,但行会被添加到末尾。
string[][]
如果我事先知道行,我想我可以使用二维字符串数组,但事实并非如此。
我目前已经创建了一个包含 3 个字段的自定义类并将它们存储在一个列表中,但我意识到这不是很优雅的解决方案,数据看起来像这样
艺术家名 1、专辑名 1、文件名
1 艺术家名 2、专辑名 2、文件名 2
艺术家名 3、专辑名 3、文件名 3
等等。
哪种数据结构最适合这个?
你有很多选择取决于你想用它做什么。
// Usefull if it's not all strings
List<Tuple<int, string, string>>
或者
// A list of array.
List<string[]>
您应该创建一个自定义类:
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);
}
您可以使用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);