ArrayList的用法分析

来源:互联网 发布:淘宝出售假冒商品三次 编辑:程序博客网 时间:2024/05/16 08:38

ArrayList有个Remove方法,定义如下:

[C#]public virtual void Remove(   object obj);

参数

obj
要从 ArrayList 移除的 Object。该值可以为空引用(Visual Basic 中为 Nothing)。


示例

   ArrayList arr = new ArrayList();
   string aaa = "我不知道啊";
   string bbb = "你说那?";
   string ccc = "晕";
   TextBox tb = new TextBox();
   tb.Text = "确定";

   arr.Add( aaa );
   arr.Add( bbb );
   arr.Add( ccc );
   arr.Add( tb );

   Response.Write("删除之前的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

   arr.Remove( bbb );

   Response.Write("删除之后的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

执行结果如下:

删除之前的成员结构如下:
我不知道啊
你说那?

System.Web.UI.WebControls.TextBox


删除之后的成员结构如下:
我不知道啊

System.Web.UI.WebControls.TextBox


那么如果执行ArrayList.Remove(i)会出现什么结果那?

   ArrayList arr = new ArrayList();
   string aaa = "我不知道啊";
   string bbb = "你说那?";
   string ccc = "晕";
   TextBox tb = new TextBox();
   tb.Text = "确定";

   arr.Add( aaa );
   arr.Add( bbb );
   arr.Add( ccc );
   arr.Add( tb );

   Response.Write("删除之前的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

   arr.Remove( 2 );

   Response.Write("删除之后的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

执行结果如下:

删除之前的成员结构如下:
我不知道啊
你说那?

System.Web.UI.WebControls.TextBox


删除之后的成员结构如下:
我不知道啊
你说那?

System.Web.UI.WebControls.TextBox

可以发现,元素并没有被删除,因为找不到 2 这个对象 , 也没有抛出异常


[问] 那么也就是说我没有办法直接删除第n个元素?

[问] 那么也就是说我没有办法直接删除第n个元素?

[答] 当然不是了,用下面的代码就可以了

   ArrayList arr = new ArrayList();
   string aaa = "我不知道啊";
   string bbb = "你说那?";
   string ccc = "晕";
   TextBox tb = new TextBox();
   tb.Text = "确定";

   arr.Add( aaa );
   arr.Add( bbb );
   arr.Add( ccc );
   arr.Add( tb );

   Response.Write("删除之前的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

   arr.Remove( arr[2] );

   Response.Write("删除之后的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

执行结果如下:

删除之前的成员结构如下:
我不知道啊
你说那?


System.Web.UI.WebControls.TextBox
删除之后的成员结构如下:
我不知道啊
你说那?
System.Web.UI.WebControls.TextBox

可以看到,第三个元素已经被移除了


  找了一下msdn,发现还有一个更简单的根据索引移除元素的方法:

   ArrayList arr = new ArrayList();
   string aaa = "我不知道啊";
   string bbb = "你说那?";
   string ccc = "晕";
   TextBox tb = new TextBox();
   tb.Text = "确定";

   arr.Add( aaa );
   arr.Add( bbb );
   arr.Add( ccc );
   arr.Add( tb );

   Response.Write("删除之前的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

   arr.RemoveAt( 2 );

   Response.Write("删除之后的成员结构如下:<br>");
   for( int i = 0 ; i < arr.Count ; i++ )
   {
    Response.Write( arr[i].ToString() + "<br>" );
   }

执行结果如下:

删除之前的成员结构如下:
我不知道啊
你说那?

System.Web.UI.WebControls.TextBox


删除之后的成员结构如下:
我不知道啊
你说那?
System.Web.UI.WebControls.TextBox

可以发现,第3个元素已经被移除了