将对象添加到arraylist并读取它们

Nie*_*tte 1 c# arraylist visual-studio winforms

我想补充的对象DataPerLabel,以我Arraylist allData的代码如下DataPerLabel:

class DataPerLabel
{
    public String labelName;
    public String labelAdress;
    public String dataType;

    public DataPerLabel(String labelName, String labelAdress, String dataType)
    {
        this.labelName = labelName;
        this.labelAdress = labelAdress;
        this.dataType = dataType;
    }

    public String getLabelName()
    {
        return labelName;
    }

    public String getLabelAdress()
    {
        return labelAdress;
    }

    public String getDataType()
    {
        return dataType;
    }
}
Run Code Online (Sandbox Code Playgroud)

在下面的代码中,我尝试将对象添加DataPerLabel到my arraylist:

submitButton.Click += (sender, args) =>
{
    String label = textboxLabel.Text;
    String adress = textboxAdress.Text;
    String dataType = "hey";

    if (buttonsLabelBool.Checked)
    {
        dataType = "Bool";
    }
    else if (buttonsLabelReal.Checked)
    {
        dataType = "Real";
    }
    else if (buttonsLabelInt.Checked)
    {
        dataType = "Int";
    }
    allData.Add(new DataPerLabel(label, adress, dataType));
};
Run Code Online (Sandbox Code Playgroud)

最后我尝试arrayList通过在a中显示它来读出textbox,请参阅以下代码:

private void test()
{
    Button btn = new Button();
    btn.Location = new Point(500,500);
    btn.Text = "test";
    btn.Click += (sender, args) =>
    {
        foreach (var item in allData)
        {
            //Display arraylist per object here
            //Something like : item.getLabelName();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,希望你能帮忙!

ash*_*hin 7

ArrayList存储一个列表System.Object.您需要将对象强制转换DataPerLabel为如下:

foreach (var item in allData)
{
    ((DataPerLabel)item).getLabelName();
}
Run Code Online (Sandbox Code Playgroud)

或者,你可以指定在foreach而不是数据类型var的JakubDąbek在评论中指出如下:

foreach (DataPerLabel item in allData)
{
    item.getLabelName();
}
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用通用列表/集合List<DataPerLabel>来存储数据,以便可以避免转换.