1.1简单数组
1.2 多维数组
1.3锯齿数组
1.4Array数组
1.5作为参数的数组
1.6枚举
1.7结构
以上部分可参考 http://www.cnblogs.com/ztb123/articles/4195864.html
1.8元组
数组合并了相同类型的对象,而元组合并了不同类型的对象.Net 4定义了 8个泛型 Tuple类 和一个静态 Tuple类 ,它们用作元组的工厂。 这里的不同泛型 Tuple类支持不同数量的元素。 例如,Tuple<T1> 包含-个元素,Ttple<T1,T2> 包含两个元素,以此类推,元组用Tuple的静态Create()方法创建。
1 public static Tuple<int, int> Divide(int dividend, int divisor)
2 {
3 int result = dividend / divisor;
4 int reminder = dividend % divisor;
5 return Tuple.Create(result, reminder);
6 }
7
8 var result = Divide(2,3);
9 Console.WriteLine("result if division:{0},reminder:{1}", result.Item1, result.Item2);
如果元组包含的项超过 8个,就可 以使用 带 8个参数的 Tuple类 定义。 最后一个模板参数是 TRrest,表示必须给它传递一个元组。 这样,就可以创建带任意个参数的元组了,可在类上右键转到定义查看。
2集合
2.1集合和接口类型
大多数集合类都可在 systm.Collections和 system.Collections.Generic名称空间中找到 。 泛型集合 类 位 于System.Collections.Generic名 称 空 间 中,专门于特定类型的集合类位于System.Collections.Specialized名称空间中,线程安全的集合位于System.Collections.Concurrent名称空间中。
集合和列表实现的接口:
- IEnumerable<T> 如果将Foreache语句用于集合,就需要IEnumerable接口,这个接口定义了GetEnumerator()方法,它返回一个实现了IEnumable接口的枚举。
- ICollection<T> 这个接口由泛型集合类实现。使用这个接口可以获得集合中的元素个数(Count属性),把集合复制到数组中(CopyTo()方法),还可以从集合中添加和删除元素(Add(),Remove(),Clear())
- IList<T> 此接口用于 可通过位置访问其中的元素的列表,这个接口定义了一个索引器,可以在集合的指定位置插入或删除某些项,此接口派生自ICollection<T>接口
- ISet<T> 实现这个接口的集合可以允许合并不同的集,获得2个集合的交集,检查2个集合是否重叠,此接口派生自ICollection<T>接口
- IDictionary<TKey,TValue> 此接口有包含键和值的泛型集合实现,使用这个接口可以访问所有的键和值,使用键类型的索引可以访问某些项,还可以添加和删除某些项。
- ILookup<TKey,TValue> 此接口类似于IDictionary<TKey,TValue>接口,实现此接口的集合有键和值,且可以通过一个键包含多个值。
- IComparer<T> 此接口由比较器实现,通过compare()方法给集合中的元素排序
- IEquaityComparer<T>此接口由一个比较器实现,发、该比较器可以用于字典中的键。使用这个接口可以对对象进行相等性比较。
- IProducerConsumerCollection<T>此接口支持新的线程安全的集合类
2.2列表
.Net Framework为动态列表提供了泛型类List<T>.这个类实现了IList,IConllection,IEnumerable IList<T>,ICollection<T>和IEnunerable<T>接口。
使用默认的构造函数创建一个空列表,元素添加到列表后,列表的容量就会扩大为可接纳4个元素,如果添加了第5个元素,列表的大小就会变为原来的2倍,以此类推。如果列表的容量改变了,整个集合就会重新分配到一个新的内存中,所以为了节省时间,如果事先知道列表的容量,就可以用构造函数定义其容量。
List<int> list = new List<int>() { 1, 2 }; list.Add(3);//添加 list.Insert(0, 4);//插入 for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]);//访问元素 } list.RemoveAt(3);//删除 int num= list.IndexOf(2);//查找 list.Sort();//排序 foreach (var item in list) { Console.WriteLine(item); } list.AsReadOnly();//设置为只读集合,所有的修改集合的方法和属性都会抛出NotSupportedExection异常