最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
asp.net C#中泛型的使用详解
时间:2022-06-25 08:02:12 编辑:袖梨 来源:一聚教程网
一、List
System.Collections.Generic(程序集:mscorlib)
二、List
1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。 2)、是ArrayList类的泛型等效类。 3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。 4)、可以接收null空引用(VB中的Nothing)。 5)、允许重复元素
三、List
名称 说明
List
List
List
说明:默认向 List
四、List
名称 说明
Capacity 获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。
Count 获取 List
说明:Capacity 是 List
五、List
名称 说明
Add 将对象添加到 List
AddRange 将指定集合的元素添加到 List
AsReadOnly 返回当前集合的只读 IList
BinarySearch(T) 使用默认的比较器在整个已排序的 List
BinarySearch(T, IComparer
BinarySearch(Int32, Int32, T, IComparer
Clear 从 List
Contains 确定某元素是否在 List
ConvertAll
CopyTo(T[]) 将整个 List
Exists 确定 List
Find 搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List
FindIndex(Predicate
ForEach 对 List
GetEnumerator 返回循环访问 List
IndexOf(T) 搜索指定的对象,并返回整个 List
Insert 将元素插入 List
InsertRange 将集合中的某个元素插入 List
LastIndexOf(T) 搜索指定的对象,并返回整个 List
Remove 从 List
Reverse() 将整个 List
Sort() 使用默认比较器对整个 List
TrimExcess 将容量设置为 List
TrueForAll 确定是否 List
说明:上述方法说明中有用到“谓词”,谓词就是Predicate
命名空间:using System.Collections.Generic;
普通数组:在声明时必须制定数组的长度和数据类型;ArrayList:数组元素数据类型和长度不受限制,但效率稍微低些;泛型:类似于数组功能,其长度不受限制,数据类型在声明时必须指定。
C#中预定义了集中常用的泛型类,如:List
1. List
语法:
List<类型> 变量 = new List<类型>();
List<类型> 变量 = new List<类型> { XXX, XXX, XXX}; // 声明并初始化
示例1:简单实用:声明、初始化、赋值、读取等操作。在下例中可以看出,变量list1可以任意的添加元素,长度不受限制。
// 声明方式1
List list1 = new List();
list1.Add(211);
list1.Add(985);
// 声明方式2
List list2 = new List { 211, 985 };
list2.Add(136);
for (int i = 0; i < list2.Count; i++)
{
Console.Write(list2[i].ToString());
}
2. Dictionary
上例中泛型变量list1中存储的元素是Int类型的变量,而在实际的应用当中往往要比这更加复杂。Dictionary
每个元素可以理解为一行记录,Key为主键,必须唯一,可以为Int、String等类型。
Value项可以为任意类型,可以是Int、String、数组等,也可以是实例化的对象。
① 简单使用
class Program
{
static void Main(string[] args)
{
// 实例化三个User对象
User user1 = new User("李宁", 21);
User user2 = new User("耐克", 42);
User user3 = new User("阿迪", 31);
// 声明Dictionary泛型变量users
// Key的类型为Int;Value的类型为User
Dictionary
// 向users添加“元素”,“元素”的key不能重复
users.Add(2, user1);
users.Add(3, user2);
users.Add(5, user3);
// 循环遍历每个“元素”
foreach (var p in users)
{
Console.Write(p.Key);
Console.Write(p.Value.name);
Console.Write(p.Value.age);
}
// 直接遍历元素的Values
foreach (User u in users.Values)
{
Console.Write(u.name);
Console.Write(u.age);
}
}
}
// User类
class User
{
public string name; // 姓名
public int age; // 年龄
public User(string name, int age)
{
this.name = name;
this.age = age;
}
}
② 作为参数使用
class Program
{
static void Main(string[] args)
{
User user1 = new User("李宁", 21);
User user2 = new User("耐克", 42);
User user3 = new User("阿迪", 31);
Dictionary
users.Add(2, user1);
users.Add(3, user2);
users.Add(5, user3);
Program.show(users); // 将泛型变量作为函数参数使用
}
// 注意参数类型的书写格式
static void show(Dictionary
{
foreach (var p in list)
{
Console.Write(p.Key);
Console.Write(p.Value.name);
Console.Write(p.Value.age);
}
}
}
class User
{
public string name; // 姓名
public int age; // 年龄
public User(string name, int age)
{
this.name = name;
this.age = age;
}
}