ArrayList中Add的一个问题求解

rogerfz 2010-09-27 06:51:33
见代码:
public class Stock
{
public Color m_Color;
public String m_Ticker;
public float[] m_Price;
}



ArrayList m_StockList = new ArrayList();
Stock aStock = new Stock();
aStock.m_Ticker = "MSFT";
aStock.m_Color = Color.Red;
aStock.m_Price = new float[5] { 36.1F, 71.3F, 119.35F, 45.2F, 64.9F };
m_StockList.Add(aStock);

aStock.m_Ticker = "INTL";
aStock.m_Color = Color.Blue;
aStock.m_Price = new float[5] { 10.3F, 23.34F, 22.2F, 8.78F, 20.19F };
m_StockList.Add(bStock);

aStock.m_Ticker = "ORCL";
aStock.m_Color = Color.Green;
aStock.m_Price = new float[5] { 20.3F, 123.34F, 52.2F, 68.78F, 70.19F };
m_StockList.Add(cStock);

为何对m_StockList增加了3次,每次增加的都是不一样的,但是为什么查看m_StockList时有3个相同的东西呢,都是为最后一个
...全文
93 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
s136735431 2010-09-27
  • 打赏
  • 举报
回复
引用类型保存的是地址,可以把多创建几个Stock的对象,你这个写法会覆盖原值。
ArrayList m_StockList = new ArrayList();
Stock aStock = new Stock();
aStock.m_Ticker = "MSFT";
aStock.m_Color = Color.Red;
aStock.m_Price = new float[5] { 36.1F, 71.3F, 119.35F, 45.2F, 64.9F };
m_StockList.Add(aStock);

Stock bStock = new Stock();
bStock.m_Ticker = "INTL";
bStock.m_Color = Color.Blue;
bStock.m_Price = new float[5] { 10.3F, 23.34F, 22.2F, 8.78F, 20.19F };
m_StockList.Add(bStock);

Stock cStock = new Stock();
cStock.m_Ticker = "ORCL";
cStock.m_Color = Color.Green;
cStock.m_Price = new float[5] { 20.3F, 123.34F, 52.2F, 68.78F, 70.19F };
m_StockList.Add(cStock);
wuyq11 2010-09-27
  • 打赏
  • 举报
回复
Stock aStock = new Stock();

m_StockList.Add(aStock);
aStock=null;
aStock =new Stock();
指向同一个对象

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧