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