问题描述
publicArrayListgoods=newArrayList();Goodg1=newGood();g1.goodsName="皮鞋";g1.goodPurchase=180;//进价g1.goodsPrice=200;//卖价data.goods.Add(g1);Goodg2=newGood();g2.goodsName="西装裤";g2.goodPurchase=60;g2.goodsPrice=80;data.goods.Add(g2);Goodg3=newGood();g3.goodsName="电风扇";g3.goodPurchase=70;g3.goodsPrice=99;data.goods.Add(g3);Goodg4=newGood();g4.goodsName="王老吉";g4.goodsPrice=3;g4.goodPurchase=4;data.goods.Add(g4);publicArrayListgoods=newArrayList();我想知道怎么做才能统计它的出售价和进价的和
解决方案
解决方案二:
ArrayListgoods=newArrayList();Goodg1=newGood();g1.GoodsName="皮鞋";g1.GoodPurchase=180;//进价g1.GoodsPrice=200;//卖价goods.Add(g1);Goodg2=newGood();g2.GoodsName="西装裤";g2.GoodPurchase=60;g2.GoodsPrice=80;goods.Add(g2);Goodg3=newGood();g3.GoodsName="电风扇";g3.GoodPurchase=70;g3.GoodsPrice=99;goods.Add(g3);Goodg4=newGood();g4.GoodsName="王老吉";g4.GoodsPrice=3;g4.GoodPurchase=4;goods.Add(g4);intgoodsPrice=0;intgoodPurchase=0;foreach(Goodgingoods){goodsPrice+=g.GoodsPrice;goodPurchase+=g.GoodPurchase;}
解决方案三:
vargoodsPricetotal=goods.Cast<object>().Sum(x=>(xasGood).GoodsPrice);vargoodPurchasetotal=goods.Cast<object>().Sum(x=>(xasGood).GoodPurchase);
解决方案四:
有几件“背景知识”需要了解:1.我们不用ArrayList等弱类型数据结构。我们基本上要求只用强类型的,以便保证程序可以在编译时检查出更多设计错误。2.当你使用一个简单的Good[]数据结构或者List<Good>数据结构,使用一个foreach就能遍历了。累计不是问题。3.最为重要的是,所谓“售价+进价”的和,这是一个很无厘头的概念。我怀疑你被一个培训机构忽悠了。稍微有一个行业(零售业)知识的人就知道,商品的进价是变动的,是跟进货批次或者进货单相关的,放在跟售价并列来进行逻辑设计,非常荒唐。
解决方案五:
我做.Net开发这几年,还真没有用到过ArrayList。因为我接触.Net是从.Net2.0开始接触的,所以我甚至曾经不知ArrayList的存在。直到有一天被问到ArrayList,然后查了一下,才知道了原来.Net里面还有ArrayList。但ArrayList是.Net1.0、1.1年代的产物,它实际上在.Net2.0里面已经不推荐适用了,只不过为了与.Net1.x兼容,所以类库里还保留着这个类。在.Net2.0里面,可以用List<object>来代替ArrayList。显然通常我们不会用List<object>,除非我们真的不能确定List<T>的这个T的类型。如果时至今日还有人在代码里面用到ArrayList,我只能说:下三滥的培训机构和教材真是害人不浅。
解决方案六:
引用4楼的回复:
我做.Net开发这几年,还真没有用到过ArrayList。因为我接触.Net是从.Net2.0开始接触的,所以我甚至曾经不知ArrayList的存在。直到有一天被问到ArrayList,然后查了一下,才知道了原来.Net里面还有ArrayList。但ArrayList是.Net1.0、1.1年代的产物,它实际上在.Net2.0里面已经不推荐适用了,只不过为了与.Net1.x……
在.NET2.0时代并不能完全丢弃ArrayList,一直到C#4.0的出现。这是因为之前的泛型集合并不支持逆变和协变。