如何将List <tuple>传递给另一个类?

时间:2017-11-06 09:04:15

标签: c# list tuples

我试图将List传递传递给Windows窗体,并且在此列表中添加记录时出错(请参阅代码)。列表中有3个参数:MacAddress(字符串),Port(int),数据包到达时的时间(DateTime)。我想每隔1秒刷新一次列表框中的列表。

    class Listen
        {
            Form1 mainForm;
            List<Tuple<string, int, DateTime>> list = new List<Tuple<string, int, DateTime>>();

            public Listen(Form1 mainForm)
            {
                this.mainForm = mainForm;
            }

            public List<Tuple<string, int, DateTime>> GetList()
            {
                return list;
            }

            public void AddtoList(string MacAddr, int deviceNumber, DateTime dt)
            {
                //ERROR:No overload for method 'Add' takes 3 arguments
                list.Add(MacAddr, deviceNumber, dt);
            }

            public void StartListen(string deviceNum)
            {
             ...
                AddtoList(MacAddr.ToString(), deviceNumber, DateTime.Now);
             ...
            }
    }

public partial class Form1 : Form
    {
        private Listen lis;
        public Form1()
        {
            InitializeComponent();
            lis = new Listen(this);
            var devices = lis.GetDevices();
            comboBox2.DataSource = devices;
        }
public void PrintList()
        {
            lis = new Listen(this);
            var list = lis.GetList();
            for (int i = 0; i < list.Count; i++)
            {
                TimeSpan ts = DateTime.Now - list[i].Item3;
                listBox1.Items.Add(list[i].Item1 + "Port: " + list[i].Item2 + "Timer: " + ts);
            }

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            PrintList();
        }
}

1 个答案:

答案 0 :(得分:2)

如果您有类型列表,则必须提供该特定类型的实例。显然没有一种方法支持每种类型的所有可能的属性。但是请创建一个新的Tuple

list.Add(new Tuple<string, int, DateTime>(MacAddr, deviceNumber, dt));