泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
非泛型集合类 泛型集合类
ArrayList List<T>
HashTable DIctionary<T>
Queue Queue<T>
Stack Stack<T>
SortedListSortedList<T>
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的化 用 Dictionary<TKey,TValue> 集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息(
商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。
[] 是针对特定类型、固定长度的。
List 是针对特定类型、任意长度的。
Array 是针对任意类型、固定长度的。
ArrayList 是针对任意类型、任意长度的。
Array 和 ArrayList 是通过存储 object 实现任意类型的,所以使用时要转换。
应用示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// System.Int32 是结构
int[] arr = new int[] { 1, 2, 3 };
Response.Write(arr[0]); // 1
Change(arr);
Response.Write(arr[0]); // 2
// List 的命名空间是 System.Collections.Generic
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
Response.Write(list[0]); // 1
Change(list);
Response.Write(list[0]); // 2
// Array 的命名空间是 System
Array array = Array.CreateInstance(System.Type.GetType("System.Int32"), 3);// Array 是抽象类,不能使用 new Array 创建。
array.SetValue(1, 0);
array.SetValue(2, 1);
array.SetValue(3, 2);
Response.Write(array.GetValue(0)); // 1
Change(array);
Response.Write(array.GetValue(0)); // 2
// ArrayList 的命名空间是 System.Collections
ArrayList arrayList = new ArrayList(3);
arrayList.Add(1);
arrayList.Add(2);
arrayList.Add(3);
Response.Write(arrayList[0]); // 1
Change(arrayList);
Response.Write(arrayList[0]); // 2
}
private void Change(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] *= 2;
}
}
private void Change(List<int> list)
{
for (int i = 0; i < list.Count; i++) // 使用 Count
{
list[i] *= 2;
}
}
private void Change(Array array)
{
for (int i = 0; i < array.Length; i++) // 使用 Length
{
array.SetValue((int)array.GetValue(i) * 2, i); // 需要类型转换
}
}
private void Change(ArrayList arrayList)
{
for (int i = 0; i < arrayList.Count; i++) // 使用 Count
{
arrayList[i] = (int)arrayList[i] * 2; // 需要类型转换
}
}
}
参考资料
http://www.cftea.com/c/2008/10/XNW6ZR0WXNGK6B9X.asp
http://home.51.com/chen249993213/diary/item/10044022.html
分享到:
相关推荐
### C# 中 Array、ArrayList 和 List 的区别 在C#编程语言中,处理集合数据时,程序员经常需要根据实际需求选择合适的集合类型。本文将详细解释C#中Array、ArrayList和List之间的区别,并通过示例代码帮助理解这些...
本文将详细探讨Array和ArrayList的异同点,帮助读者更好地理解这两种集合类型的特点及适用场景。 ### Array #### 定义: Array是最基础的数组类型,它是一种固定大小的数据结构,用于存储相同类型的元素集合。...
在C#编程语言中,Array和ArrayList是两种不同的数据结构,它们各自有着特定的用途和特点。下面将详细解析这两种数据结构以及它们的区别。 一、Array的使用 Array是C#中的固定大小的集合,它在声明时必须指定类型和...
C#中有多种数据结构可以用来存储和管理数据,今天我们将讨论四种常用的数据结构:Array、ArrayList、Hashtable和Dictionary。这些数据结构都是_Collections_命名空间的一部分,提供了不同的方式来存储和检索数据。 ...
在C#编程语言中,数组([])、List、Array和ArrayList是四种常见的数据集合类型,它们各自具有不同的特点和适用场景。下面将详细解释它们的区别和应用场景。 1. 数组([]): 数组是C#中最基本的数据结构,它允许...
在C#编程语言中,Array和ArrayList是两种不同的数据结构,它们各自有着特定的用途和特点。Array是.NET框架中的基本类型,代表固定大小的、同类型的元素集合,而ArrayList则是System.Collections命名空间下的一个类,...
在C#编程中,数组、ArrayList和泛型List都是用来存储一组对象的数据结构,但它们各有特点和适用场景。下面将详细对比这三种数据结构。 首先,数组(Array)是最基本的数据结构,用于存储固定数量且同类型的元素。在...
在C#编程中,我们经常会遇到四种数据结构用于存储和管理数据:数组(Array)、ArrayList、List和Dictionary, TValue>。这些数据结构各有特点,选择合适的类型取决于具体需求。下面将对它们的用法和差异进行详细阐述...
本篇文章将深入探讨三种常见的集合类型:Array、ArrayList、Hashtable以及泛型的List,并提供相关的示例代码来帮助理解它们的用法。 ### 1. Array(数组) 数组是最基础的集合类型,它允许存储相同类型的元素序列...
在C#编程语言中,ArrayList是一个非常常用的动态数组类,它是System.Collections命名空间的一部分。ArrayList提供了灵活的容量扩展和操作,但与固定大小的一维数组相比,它在内存管理和性能方面有所不同。本篇文章将...
本文主要探讨了几个常用的集合类,包括Array、ArrayList、List、Hashtable、Dictionary, TValue>、Stack和Queue,以及它们的特点和应用场景。 1. **数组**(Array):数组是最基本的数据结构,它是一个固定大小的...
在C#中,数组分为一维数组、二维数组和多维数组,以及 Jagged Array(不规则数组)。 二、一维数组 1. 定义:一维数组的定义格式为 `type[] arrayName = new type[元素个数];` 示例:`int[] numbers = new int[5];...
本文将介绍 C# 中的 ArrayList、HashSet、HashTable、List、Dictionary 等集合类的区别和应用场景。 ArrayList 是一个可变长数组,可以将任意多的数据添加到 ArrayList 中。其内部维护的数组,当长度不足时,会自动...
在示例中,`ArrayList` 用于动态存储不同类型的动物实例,但它的操作不如 `List<T>` 效率高。为了对 `ArrayList` 进行排序,需要先转换为 `List<T>`。 6. **foreach 循环**:`foreach` 用于遍历集合中的元素,如数...
### C# 中 List 转换为 DataSet 的方法解析及应用场景 #### 一、知识点概述 在 C# 开发过程中,经常会遇到数据处理的需求,尤其是从数据库查询数据后进行一系列操作,比如展示、分析或者导出报表等。在这个过程中...
在C#中,数组有两种类型:固定大小的数组(如int[])和可变大小的数组,也就是所谓的动态数组或ArrayList、List等。 **动态声明对象数组** 在C#中,动态声明一个对象数组通常涉及使用new运算符和System....
在本主题"数组的应用"中,我们将深入探讨C#中数组的创建、操作以及一些高级特性,特别是如何动态地调整数组大小以适应不断变化的数据需求。 首先,数组的基本概念是不可忽视的。在C#中,数组可以是一维、二维或多维...