3

我试图将 11 种不同的数据类型组合到一个列表中,我可以添加和删除该列表,以及搜索特定值。这些数据类型范围涉及 bool、string、int 和 double。

目标是将更新的值添加到此主列表中,因为它们每分钟都会出现。例如...在下午 5:45,将从系统中捕获 11 个新值。如果通过 if/else if 挑战,这 11 个值将被添加到主列表中。这 11 个值将是:

  • 插槽 1 - Time[0].ToString("HH:mm"); (显示为示例)
  • 插槽 2 -(数据类型双)
  • 插槽 3 - (数据类型双)
  • 插槽 4 - (数据类型双)
  • 插槽 5 - (数据类型双)
  • 插槽 6 -(数据类型双)
  • 插槽 7 -(数据类型双)
  • 插槽 8 - (数据类型双)
  • 插槽 9 -(数据类型 bool)
  • 插槽 10 -(数据类型字符串)
  • 插槽 11 - (数据类型双)

如果传入数据没有通过 if/else if 挑战,则相应的列表将被重置,所有现有数据都从列表中删除。

我在这里以及通过几个网络搜索解决了不同的问题,但我要么不理解如何正确声明列表或列表结构,如果我应该使用类或数组等。

4

6 回答 6

9

您列出的那 11 个插槽似乎正在描述一个class. 您应该创建一个具有 11 个属性的类,每个属性对应一个插槽。它应该具有适当的数据类型,以及一个有意义的名称(不要只称它为 slot1、slot2)。

该类应该有一个 IsValid 方法,因为您似乎需要能够验证该类的数据单元。

然后,您可以收集List可以添加(如果有效)、从中删除和搜索。

于 2012-08-21T20:48:34.337 回答
5

只需使用这个:

List<IList> yourList = new List<IList>(){
    //you'll able to add different types of list there
}
//dont forget to use this:
using System.Collections

或者

List<System.Collections.IList> yourList = new List<System.Collections.IList>(){
    //you'll able to add different types of list there
}

经过测试和工作:D

于 2012-10-24T10:55:42.887 回答
1

有不止一种可能性,这是您的选择,具体取决于您的问题的特征。您可以创建一个Object来表示之前帖子中提到的内容,甚至可以使用DataTable您的插槽作为列的位置,如果您的“if/else if 挑战”(如您所说)通过,它将创建一个新行。

请参阅以下参考:

System.Data.DataTable 文档

亲切的问候,
赫伯特·沃尔

于 2012-08-21T21:09:48.467 回答
0
List<object> Slots = new List<object>();

To Add Slot:
Slots.Add((double)23.45);
于 2014-09-18T09:00:49.120 回答
-1

虽然我建议创建一个类来保存您的数据,例如

public class SlotData
{
    public DateTime Slot1 { get; set; }
    public Double Slot2 { get; set; }
    public Double Slot3 { get; set; }
    public Double Slot4 { get; set; }
    public Double Slot5 { get; set; }
    public Double Slot6 { get; set; }
    public Double Slot7 { get; set; }
    public Double Slot8 { get; set; }
    public Boolean Slot9 { get; set; }
    public String Slot10 { get; set; }
    public Double Slot11 { get; set; }
}

只要确保在使用数据之前检查类型,您也可以使用对象列表。

List<object> SlotData = new List<object>();

if (SlotData[0] != null && SlotData[0] is DateTime)
{
  Do something
}
于 2012-08-21T20:53:36.653 回答
-1

解决方案应该是使用对象列表列表。所以存储任何值来列出是没有问题的。当你想从列表中获取一些值时,你可以根据需要进行转换。

或者其他更好的解决方案是创建一个类,该类将包含具有对象类型的成员和第二个成员,该成员将是存储在对象成员中的值的类型。参见示例:

    // class for storing values
    public class SlotItem
    {

        public object Val { get; private set; }
        public Type ValType { get; private set; }

        public SlotItem(object o, Type valType)
        {
            Val = o;
            ValType = valType;
        }
    }



    protected void Page_Load(object sender, EventArgs e)
    {
        // store values to List
        List<SlotItem> list = new List<SlotItem>();
        list.Add(new SlotItem("sometext", typeof(String))); // store text
        list.Add(new SlotItem(100, typeof(Int32)));         // store number

        // read values from List
        foreach (SlotItem slot in list)
        {
            var val = Convert.ChangeType(slot.Val, slot.ValType);
            Response.Write(val);
        }
    }
于 2012-08-21T21:11:48.333 回答