0

ユーザーが UIList<T>からデータ型を選択して指定する場所を作成しようとしています。を保持するComboBoxのオブジェクトを作成できましたが、イベント ハンドラを終了すると、 は範囲外になります。クラスレベルの変数を作成することはできますか? 試してみましたが、エラーが発生したため、コメントアウトする必要がありました。CustomEntityList<T>Button1_ClickCustomEntity

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CustomClassWithGenericList
{
    public partial class Form1 : Form
    {
        //The following error is created: Cannot implicitly convert type
        //CustomClassWithGenericList.CustomEntity<decimal> to
        //CustomClassWithGenericList.CustomEntity<object>


        //private CustomEntity<object> input1;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (cb1.SelectedItem.ToString().ToUpper() == "DECIMAL")
            {
                input1 = new CustomEntity<decimal>();

                string[] temp = textBox1.Text.Split(',');

                foreach (string s in temp)
                {
                    decimal number;

                    if (decimal.TryParse(s, out number))
                    {
                        input1.inputValue.Add(number);
                    }
                    else
                    {
                        MessageBox.Show("Error occured.");
                    }
                }
            }
            else if(cb1.SelectedItem.ToString().ToUpper() == "INT")
            {
            }
            else if(cb1.SelectedItem.ToString().ToUpper() == "TIMESPAN")
            {
            }
        }
    }

    public class CustomEntity<T>
    {
        public List<T> inputValue; 

        public CustomEntity()
        {
            inputValue = new List<T>();
        }
    }
}
4

2 に答える 2

1

コメントアウトされた行は、定義された型ではない型 T を使用しています。宣言の時点でジェネリックの型引数リストを指定する必要があるわけではなく、他の場所でも指定する必要はありません。

ジェネリックに任意のオブジェクトを保持できるようにする場合は、型「オブジェクト」を型引数として単純に渡す必要があります。

ただし、いくつかの異なる型しか作成できない場合は、後でどのように使用するかによって、型ごとに 1 つのメンバー変数を作成することをお勧めします。

于 2013-02-01T22:22:36.553 に答える
1

そこで使えるテクニックはたくさんあります。まず、動的な型変数を作成Object、必要に応じてキャストすることができます。

また、データをメモリ内の何らかの状態 (セッションまたはアプリケーションの状態、またはキャッシュなど) で保存することもできます。そのような場合は、このソースからデータを取得するだけです。

于 2013-02-01T22:23:28.903 に答える