如何在字典中存储任意数量的任意类型的数组

时间:2012-08-27 17:57:26

标签: c# .net vb.net data-structures

我正在尝试构建一个数据结构,可以通过我正在运行的一组不同测试的跟踪结果来存储试用版。测试都包含许多路径,但我想保存和以后使用的一些信息对于不同的测试是不同的。例如,TestA的结果可能如下所示:

Trial(int)   WasResponseCorrect(bool)   WhichButtonWasPressed(string)   SimulusLevel(double)

   1                  false                         "Up"                         3.5
   2                  true                          "Left"                       6.5

TestB可能有不同类型的结果字段:

Trial(int)    WasResponseCorrect(bool)    ColorPresented(string)    LetterPresented(char)     LetterGuessed(Char)
  1                     false                      green                     G                        C

  2                     false                      blue                      H                        F

我正在考虑创建一个字段名称作为键的字典(例如,WasResponseCorrect)和字段值的数组作为dic的值。我无法弄清楚如何做到这一点。也许有更好的方法来存储信息,但我想不出怎么做。我正在使用.net(VB和C#)但我认为如果您了解其他语言的示例,我可以理解并转换大多数代码。谢谢!

1 个答案:

答案 0 :(得分:4)

如果不了解您的要求(例如,您将如何存储数据),似乎多态性就是您正在寻找的。也就是说,您有一个超类(称为Trial)和表示特定试用类型的子类。例如:

public class Trial {
    public int Id { get; set; }
    public bool WasResponseCorrect { get; set; } // if this is in every type of trial
    // anything else that is common to ALL trial types
}

public class TrialA : Trial {
    public string WhichButtonWasPressed { get; set; }
    public double SimulusLevel { get; set; }
}

public class TrialB : Trial {
    public string ColorPresented { get; set; }
    public char LetterPresented { get; set; }
    public char LetterGuessed { get; set; }
}

这样您就可以拥有Trial个对象的列表,但这些对象的实际运行时类型可以是TrialATrialB