体验7-用List代替ArrayList

在C#2.0 中,List<>是ArrayList的泛型版本。当需要向列表添加同一个类的实例时,用List<>代替ArrayList是最好的选择,代码清晰了,同时也避免了装箱撤箱,代码执行效率也提高了。

类ArrayList在命名空间System.Collections中,而List<>在命名空间System.Collections.Generic中,所以使用List<>时不要忘了添加using System.Collections.Generic。

下面的例子具体说明如何用List<> 代替 ArrayList:
先声明你要添加到List<>或ArrayList的类OneMember
public class OneMember
{
    private string m_Code; 
    private int m_Value;     

    public  OneMember(string code,int value)
    {
      m_Code = code;
      m_Value = name;
    }

    public int Code
    {
      get { return m_Code; }
    }

    public string Value
    {
      get { return m_Value; }
    }
}

以下演示向ArrayList添加OneMember:

ArrayList a = new ArrayList();
a.Add(new OneMember("0001",111));
...

当从a中读取对象时类似的代码如下:

foreach(Object obj in a)
{
  OneMember one = (OneMember)obj;
  .....
}

现在就用List<>替换ArrayList。首先把ArrayList a = new ArrayList(); 改为
List<OneMember> a = new List<OneMember>();

从a中读取对象时类似的代码如下:

foreach(OneMember obj in a)
{
  OneMember one = obj;
  .....
}

如果需要在List<>下使用索引,同样需要构造一个索引器,不过List<>下使用索引器与ArrayList的索引器不太一样,接上面代码举例如下:

private class _IComparer : IComparer<OneMember>
        {
            int IComparer<OneMember>.Compare(OneMember x, OneMember y)
            {
                return string.Compare(x.Code, y.Code);
            }

            bool IComparer<OneMember>.Equals(OneMember x, OneMember y)
            {
                return x.Code == y.Code;
            }

            int IComparer<OneMember>.GetHashCode(OneMember x)
            {
                return 0;
            }
        }

对a 进行索引并用BinarySearch检索与ArrayList一样,在此就不啰嗦了。

如果你用的是C#2.0还犹豫什么,现在就用List<>代替 ArrayList吧。

注:Microsoft Visual Studio 2005 Beta1 version 8.0.40607.16
Microsoft .NET Framework version 2.0.40607

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值