我尝试按照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;
}
}
在以下代码中,我尝试将DataPerLabel
的对象添加到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));
};
最后,我尝试通过在arrayList
中显示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();
}
};
}
,请参阅以下代码:
multipart/form-data
我不确定我做错了什么,希望你能帮忙!
答案 0 :(得分:7)
ArrayList
存储System.Object
列表。您需要将对象强制转换回DataPerLabel
,如下所示:
foreach (var item in allData)
{
((DataPerLabel)item).getLabelName();
}
或者,您可以在foreach中指定数据类型,而不是var
中指定的Jakub Dąbek,如下所示:
foreach (DataPerLabel item in allData)
{
item.getLabelName();
}
更好的方法是使用通用列表/集合List<DataPerLabel>
来存储数据,以便可以避免转换。
答案 1 :(得分:1)
Yiu应使用List<T>
代替ArrayList
。这样,列表中的每个项目都已有正确的类型,您可以访问成员:
foreach (DataPerLabel item in allData)
{
item.GetLabelItem();
}
这假定allData
的定义如下:
allData = new List<DataPerLabel>();
而不是allData = new ArrayList()
如果您真的必须使用ArrayList
,那么您应该将项目投射到实际类型。上面的代码实际上已经完成了这一切。但是你也可以使用它:
foreach (var item in allData)
{
((DataPerLabel)item).GetLabelItem();
}