0

私は次のような辞書を持っています:

Dictionary<string, dataValues> dataDict = new Dictionary<string, dataValues>();

public struct dataValues
    {
        public string Value1;
        public string Value2;
        public string Value3;
        public string Value4;
        public string Value5;
        public string Value6;
        public string Value7;
        public string Value8;
        public string Value9;
        public string Value10;
        public string Value11;
        public string Value12;
        public string Value13;
        public string Value14;
        public string Value15;
        public string Value16;
        public string Value17;
        public string Value18;
        public string Value19;
        public string Value20;
    }

辞書キーを指定することで、dataValues構造体内のすべての文字列を反復処理できるようにしたいと思います。これをどのように実現できますか?

4

4 に答える 4

2

私のコメントから:List<String>これらの文字列変数の代わりに使用してください。

@Tim Schmelter特定の値を特定の順序で割り当てる/呼び出す必要があり、リストではそれができないため、できません

コレクションのインデクサーを使用します。

Dictionary<string, List<string>> dataDict = new Dictionary<string, List<string>>();
// initialization ...
String val20OfData1 = dataDict["Data1"][19];
于 2012-08-26T22:04:39.493 に答える
0

さて、termで各メンバー変数を返すdataValuesの顧客列挙子を作成することも、リフレクションを使用してすべてのフィールドを取得することもできます...しかし、単にDictionary<string, List<string>>

于 2012-08-26T21:58:08.210 に答える
0

構造体で20個のプロパティを使用しているのはなぜですか?あなたがそれらを:に保管するのが最善でしょうList

public struct dataValues
    {
        public List<string> Values;
    }

あなたは次のようなことをすることができます:

foreach(string value in dataDict["yourKey"].Values)
{
//do what ever you want with value here
}

また、構造体がのみの場合はList、直接使用してください。構造体を作成する必要はありません。

だから、 Dictionary<string, List<string>>

その後

foreach(string value in dataDict["yourKey"])
    {
    //do what ever you want with value here
    }
于 2012-08-26T21:59:14.483 に答える
0

あなたが何をしようとしているのかよくわかりません。とにかく、構造体内で個別の文字列変数を使用する必要がある場合は、次のようにリフレクションを使用できます。

        dataValues dv = dataDict["yourKey"];
        Type dvT = dv.GetType();
        FieldInfo[] fis = dvT.GetFields();
        foreach (FieldInfo fi in fis)
        {
            MessageBox.Show(fi.GetValue(dv) as string);
        }
于 2012-08-27T05:44:37.737 に答える