IEnumerator对象有什么呢?
来源:互联网 发布:淘宝买到假瑞士军刀包 编辑:程序博客网 时间:2024/04/29 19:20
(1)集合的命名空间
大多数集合类都可以在System.Collections和System.Collections.Generic名称空间中找到。泛型集合位于System.Collections.Generic名称空间中;专用于特定类型的集合类位于System.Collections.Specialized名称空间中;线程安全的集合位于System.Collections.Concurrent名称空间中。
(2)集合接口介绍
1、IEnumerable与IEnumerator接口
其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象。
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
IEnumerator对象有什么呢?它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项。IEnumerator接口定义了:一个Current属性用来获取当前集合中的项;MoveNext方法将游标的内部位置向前移动;Reset方法将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
一个collection要支持foreach进行遍历,就必须实现IEnumerable,并以某种方式返回迭代器对象:IEnumerator.
2、集合和列表实现的接口表
接口
说明
IEnumerable
如果foreach语句用于集合,就需要此接口。
ICollection
此集合定义了Count属性、CopyTo、Add、Remove、Clear方法
IList
可以通过位置访问几何元素
ISet
此集合不允许有重复的元素
IDictionary
含有键值对的集合
ILookup
含有键值对的集合,但可以通过一个键包含多个值
IComparer
集合元素比较器,用于集合元素的排序
IEqualityComparer
用于字典集合的比较器
IProducerConsumerCollection
线程安全的集合
2.集合的基本操作
(1)创建集合
使用默认的构造函数创建一个空集合,元素添加到集合之后,集合的容量就会扩大为4.当集合的容量被使用完,且还在向集合中添加元素时,集合的容量就会扩大成原来的2倍!可使用Capacity属性设置或访问集合的容量,使用Count属性访问集合的元素个数。也可使用TrimExcess方法调整集合容量,节省内存!
class Program
{
static void Main(string[] args)
{
List list = new List();//List list = new List(3)
for (int i = 0; i < 1025; i++)
{
if (list.Count == (list.Capacity))
{
Console.WriteLine("容量使用量:"+list.Count + "/" + list.Capacity);
}
list.Add(i);
}
Console.WriteLine("容量使用量:" + list.Count + "/" + list.Capacity);
list.TrimExcess();//调整容量
Console.WriteLine("容量使用量:" + list.Count + "/" + list.Capacity);
Console.Read();
}
}
创建集合时可以为集合设置初始值,如下:
List list = new List() { 1,2,3,4,5,6,7,8,9,0};
List list = new List() { "aa", "bb", "cc" };
(2)添加元素
为集合添加元素可使用Add方法,还可以使用AddRange方法一次添加多个元素,因为AddRange方法的参数是IEnumerable类型的对象,所以可以添加数组到集合里。
class Program
{
static void Main(string[] args)
{
List list = new List();
list.AddRange(new string[]{"aa","bb","cc"});//添加数组
list.AddRange(list);//添加集合
foreach (string s in list)
{
Console.WriteLine(s);
}
Console.Read();
}
}
(3)插入元素
插入元素可以使用Insert方法,同样使用InsertRange方法插入多个元素,与AddRange方法类似。
class Program
{
static void Main(string[] args)
{
List list = new List() { "aa", "bb", "ff" };
list.Insert(2, "cc");//插入元素
list.InsertRange(3, new string[] { "dd", "ee" });//插入集合
foreach (string s in list)
{
Console.WriteLine(s);
}
Console.Read();
}
}
(4)访问元素
可以使用索引器访问集合中某个位置的元素,例如:
class Program
{
static void Main(string[] args)
{
List list = new List() { "aa", "bb", "cc" };
Console.WriteLine(list[1]);//访问第1个位置上的元素,下标从0开始
Console.Read();
}
}
集合的遍历,除了使用foreach外,还可以使用集合的Foreach方法,该方法的参数是一个Action委托类型,可以使用Lambda表达式。例如:
class Program
{
static void Main(string[] args)
{
List list = new List() { "aa", "bb", "cc" };
list.ForEach(temp => Console.WriteLine("元素:" + temp));
//也可使用: list.ForEach(Console.WriteLine);
Console.Read();
}
}
- IEnumerator对象有什么呢?
- IEnumerable和IEnumerator有什么区别?
- IEnumerable和IEnumerator有什么区别?
- IEnumerable和IEnumerator有什么区别 (摘自BaiDu知道)
- 什么是seo 呢,有什么效果呢?
- IsPostBack有什么作用呢?
- IsPostBack有什么作用呢?
- 模型有什么用呢?
- 重载有什么意义呢?
- pvfs2 有什么特点呢?
- 金银花有什么作用呢
- rpm与deb都是什么呢 有什么区别呢
- C++new出来的和直接声明的对象变量有什么不同呢?
- Java Synchronized获得类的锁和获得对象的锁有什么区别呢?
- JS 对象和数组的创建使用new和不使用new有什么区别呢?
- 存储过程有什么用呢?
- 关于MD5加密!有什么用途呢
- 与虎谋皮,饮鸩止渴,却有什么办法呢?
- java算法买苹果
- 【c++】PAT (Advanced Level)1010. Radix (25)
- Vijos P1102 陶陶摘苹果
- 链表
- poj 2392--Space Elevator
- IEnumerator对象有什么呢?
- 关于PCB电路板中反面字符串信息如何才能正常显示的经验总结
- eclipse EL 表达式
- Call to master/192.168.41.134:9000 failed on connection exception: java.net.ConnectException: Conne
- spring hibernate
- C - Legal or Not
- .反射机制基础类
- sdut 1479行编译器!!
- Ubuntu搭建subversion代码仓库+Windows7客户端TortoiseSVN管理