我正在从数据库中读取一些数据(有关属性的信息),并将信息存储在Property对象中。我将对象放在类型属性的列表中,然后在列表框中显示列表的内容。然而,我没有为每个对象获取不同的数据,而是多次获得相同的数据。 PS。我在while循环中实例化了Property对象,问题仍然存在。
void fillListBoxWithProperties()
{
List<Property> propList = new List<Property>();
db_connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from property ";
cmd.Connection = connect;
MySqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
Property prop = new Property();
prop.PropId = Convert.ToInt32(dr["propertyId"]);
prop.Address = dr["Address"].ToString();
prop.PropType = dr["PropertyType"].ToString();
propList.Add(prop);
}
foreach(Property details in propList)
{
lstBoxProperties.Items.Add(String.Format("{0} {1}", details.PropId, details.Address));
}
}
如果我将此代码添加到循环中仅用于测试:
Property prop = new Property();
prop.PropId = Convert.ToInt32(dr["propertyId"]);
prop.Address = dr["Address"].ToString();
prop.PropType = dr["PropertyType"].ToString();
propList.Add(prop);
//added code
foreach (Property o in propList)
{
Console.WriteLine(o.toString());
}
控制台中的结果如下:
Ballyare, Rathmulan, Rathmulan, 莱特肯尼, 莱特肯尼, 莱特肯尼, 护航, 护航, 护航, 护航, Gweedore, Gweedore, Gweedore, Gweedore, Gweedore, Glenties, Glenties, Glenties, Glenties, Glenties, Glenties,
物业类代码:
class Property
{
private static int _propId =0;
private static string _address="";
private static string _propType="";
public Property()
{
}
public int PropId
{
get { return _propId; }
set { _propId = value; }
}
public string Address
{
get { return _address; }
set { _address = value; }
}
public string PropType
{
get { return _propType; }
set { _propType = value; }
}
}
答案 0 :(得分:3)
好吧,现在,在您添加static
课程之后,很明显为什么您的所有实例都具有相同的内容。您让私人成员持有数据static
。因此,它们不是针对每个实例单独存在,而是针对该类的所有实例仅存在一次。删除{{1}}关键字(并查看其内容的介绍)