请教各位大侠:小弟想把一个字符添加到ArrayList中(如果ArrayList中没有该元素)
ArrayList jdName=new ArrayList();
foreach(string sName in jdName)
{
string aaa=“123”;//动态添加
if(!sName.Equals(aaa))
{
jdPerName += ","+aaa;
jdName.Add(aaa);
}
}
运行提示集合已修改;枚举操作可能不会执行。 
该怎么处理啊!

解决方案 »

  1.   

    ArrayList jdName=new ArrayList();
                jdName.Add("234");
                jdName.Add("567");
                if (!jdName.Contains("123"))
                    jdName.Add("123");
                foreach (string sName in jdName)
                {
                    Response.Write(sName);
                }用Contains
      

  2.   

              ArrayList jdName = new ArrayList();
                if (!jdName.Equals("123"))
                {
                    jdName.Add("123");
                }
    或者
          if (!jdName.IndexOf("123")==-1)
                {
                    jdName.Add("123");
                }
      

  3.   


    ArrayList jdName=new ArrayList(); 
    foreach(string sName in jdName) 

    string aaa=“123”;//动态添加 
    if(!sName.Equals(aaa)) 

    jdPerName += ","+aaa; 
    jdName.Add(aaa); 

    } 犯错误了 循环本体的时候不能对其增或删等否则就出错
      

  4.   

    不要在foreach遍历的时候改变ArrayList中的内容int index = jdName.IndexOf(aaa);
    if(index>-1)
        jdName[index]+=","+aaa;
      

  5.   

    用ArrayList 中的Contains(nValue)来判断nValue是否已存在于ArryList中,如
    ArrayList al=new ArrayList();
    string ss="abcdefg";
    if (!al.Contains(ss))//判断al中是否存在ss
       al.Add(ss+",");//不存在则加入
      

  6.   

    ArrayList中初始化后没有东西用foreach是没有用的
    你要先添加了后foreach才有意义
    像你上面的代码,你new了后就直接foreach了,其实foreach里面的东西是不会执行的。
      

  7.   

    ArrayList jdName =new ArrayList(); 
    ArrayList bb =new ArrayList();  //用另一个对象中转
    foreach(string sName in jdName) 

    string aaa=“123”;//动态添加 
    if(!sName.Equals(aaa)) 

    jdPerName += ","+aaa; 
    bb.Add(aaa); 

    } foreach(string sbb in bb) 

      jdName.Add(sbb); 
      

  8.   

    ArrayList中初始化后没有东西用foreach是没有用的 
    你要先添加了后foreach才有意义 
    像你上面的代码,你new了后就直接foreach了,其实foreach里面的东西是不会执行的。
    顶这位兄台所说的
      

  9.   

    foreach是只读的,不能修改.直接判断就可以了.if( jdName.IndexOf("aaa")<0)
       jdName.Add("aaa");