首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>asp.net>资讯:.NET,你忘记了么?(三续)——重新理解List<T>

.NET,你忘记了么?(三续)——重新理解List<T>

www.jz123.cn  2010-10-03   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

 在上文中,《.NET,你忘记了么(三)——关于Array和List的使用》中,我对List<T>的理解大错特错,在成文前,首先做下自我批评,然后也对造成的不良影响表示道歉。

  周四面试的惨败,让我的心情着实糟糕了两三天。痛定思痛,决心回家继续苦读。

  首先开始的就是对List的重新认知。在这里,让我们先从构造方法来重新认识List<T>的本质,先来看下上文中我所粘出的代码:

List<int> list = new List<int>();
for (int i = 0; i < 10; i++)
{
  list.Add(i);
}      
Random r = new Random();
for (int j = 0; j < 100; j++)
{
  int temp;
  int x1 = r.Next(10);
  int x2 = r.Next(10);
  temp = list[x1];
  list[x1] = list[x2];
  list[x2] = temp;
}

在上文中,我对这个List大批特批,现在,我们来重新看下这个List的构造:

public List()
{
  this._items = List<T>._emptyArray;
}

  先来看无参的构造方法,当无参的时候,.NET Framework其实是用一个_emptyArray来初始化了List中的items集合。那么_emptyArray又是什么呢?我们继续向下看:

private static T[] _emptyArray;

  恩,他是一个静态字段,然后我们看下List<T>的静态构造方法:

static List()
{
  List<T>._emptyArray = new T[0];
}

  我们看到,_emptyArray其实是一个T类型的数组,个数为0。那么也就是说,当我们执行0参数的构造方法时,系统是把items集合给赋值为了一个T类型的个数为0的数组。

上一篇:.NET,你忘记了么?(三)——关于Array和List的使用 下一篇:.NET组件编程(1) 基础

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图