3

11 の異なるデータ型を 1 つのリストに結合して、追加および削除したり、特定の値を検索したりしようとしています。これらのデータ型の範囲には、bool、string、int、および double が含まれます。

目標は、毎分更新された値をこのマスター リストに追加することです。たとえば... 午後 5 時 45 分に、11 個の新しい値がシステムから取得されます。if/else if チャレンジを渡すと、これらの 11 個の値がマスター リストに追加されます。これらの 11 の値は次のようになります。

  • スロット 1 - Time[0].ToString("HH:mm"); (例として示します)
  • スロット 2 - (データ型 double)
  • スロット 3 - (データ型 double)
  • スロット 4 - (データ型 double)
  • スロット 5 - (データ型 double)
  • スロット 6 - (データ型 double)
  • スロット 7 - (データ型 double)
  • スロット 8 - (データ型 double)
  • スロット 9 - (データ型 bool)
  • スロット 10 - (データ型文字列)
  • スロット 11 - (データ型 double)

受信データが if/else if チャレンジに合格しなかった場合、対応するリストがリセットされ、既存のすべてのデータがリストから削除されます。

ここでさまざまな質問をしたり、いくつかのWeb検索を行ったりしましたが、クラスや配列などを使用する必要がある場合、リストまたはリスト構造を適切に宣言する方法を理解していません.

4

6 に答える 6

9

リストした 11 のスロットは、class. 各スロットに 1 つずつ、合計 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以前の投稿で述べたようにそれを表す to を作成するか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

解決策は、オブジェクト リストのリストを使用する必要があります。したがって、リストする値を保存しても問題はありません。また、リストから値を取得したい場合は、必要に応じてキャストできます。

または、他のより良い解決策は、オブジェクト型のメンバーと、オブジェクトメンバーに格納される値の型になる2番目のメンバーを含むクラスを作成することです。例を参照してください:

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