0

文字列データをテーブル形式でメモリに保存する必要があります。列は固定されていますが、行は最後に追加されます。

string[][]事前に行を知っていれば、2次元の文字列配列を使用できると思いますが、そうではありません。

現在、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>>。最初のケースでは、必要な数の行を追加でき、列が固定されます。2番目のソリューションはやや柔軟性があり、必要な数の列を追加できます。

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 に答える