2011年3月9日 星期三

C# ArrayList 方法 Remove 小心被騙

假設我有一個陣列String[] = new String[]{"1","2","3","1"};我想要移除 "1"先把陣列轉成ArrayList 然後 使用 remove 此方法後 意外發現 他只刪除第一個 "1" 在索引4的 "1" 並沒有被刪除所以下次使用 remove方法 時候 注意 不要被騙了

範例 不使用remove


ArrayList ary = new ArrayList();
String SaNo = "12,3,4,66,1223,4,12334,56";
String[] SaNoArr = SaNo.Split(',');
if (Array.IndexOf(SaNoArr, "4") > -1)
{
for (int i = 0; i < SaNoArr.Length; i++) { ary.Add(SaNoArr[i]); } for (int i = 0; i < ary.Count; i++) { if (ary[i].ToString().Equals("4")) ary.RemoveAt(i); } SaNoArr = (String[])ary.ToArray(typeof(String)); for (int i = 0; i < SaNoArr.Length; i++) { Response.Write(SaNoArr[i]+","); } }

最後印出 12,3,66,1223,12334,56, 才是正確

1 則留言: