list集合功能很强大,但在使用过程中也会出现一些意想不到的问题,今天我在list.add()的时候遇到了一个添加错误,查了之后才发现原来错误这么简单,下面把我的错误及解决过程分享下!

首先我定义了一个类
namespace NBHT.SZJD.BLL
{
    public class PrjPicture
    {
        public int width;
        public int height;
        public string src = string.Empty;
    }
}

接着定义了一个list对象

protected List<NBHT.SZJD.BLL.PrjPicture> prjPictures = null;

用于将此类的对象存入到priPictures集合中

再定义一个类的对象pbl1(此处一定要注意对象不对再定义到foreach外部,因为list集合是一个引用类型,如果定义到外部就会出现循环添加到集合中的所有对象最后都变成了最后一次添加的那个对象了,所以要把对象new到循环内部这样每次循环就new出来一个新的对象)

BLL.PrjPicture pbll = null;


                foreach (M.ProjectPictrue p in PictureList)
                {
                    pbll = new B.PrjPicture();
                    pbll.src = p.PicUrl;
                    pbll.height =Convert.ToInt32(ConfigurationManager.AppSettings["PictureHeight"].ToString());
                    pbll.width = Convert.ToInt32(ConfigurationManager.AppSettings["PictureWidth"].ToString());
                    prjPictures.Add(pbll);
                }
这样的话,循环的结果就可以把所有的对象添加到list集合中,不至于集合中的每个对象都一样了!