小尹的博客

Hi, nice to meet you.

  1. 1. 什么是泛型
  2. 2. 泛型的用法
  3. 3. 拆箱和装箱

什么是泛型

泛型是C#2.0推出的语法(不是语法糖),将类型参数的概念引入.NET Framework,在声明并初始化类或方法之前,通过使用泛型类型参数T,使这些类或方法可以延迟指定一个或多个类型。

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Program
{
static void Main(string[] args)
{
List<string> sqlList = new List<string>();
sqlList.Add("INSERT INTO UserInfo (uName, uPassword) VALUES (root, 123456)");
sqlList.Add("INSERT INTO UserInfo (uName, uPassword) VALUES (user1, aaa)");

List<int> intList = new List<int>();
intList.Add(5);
intList.Add(9);
intList.Add(2);
}
}

List<T>是一个泛型类型,表示可通过索引访问的对象的强类型列表,T是泛型参数,string和int是类型参数。

泛型的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//泛型类
public class Compare<T> where T : IComparable
{
//泛型方法
public static T compareGeneric(T t1, T t2)
{
//返回较大的参数
return t1.CompareTo(t2) > 0 ? t1 : t2;
}
}

static void Main(string[] args)
{
//调用
Console.WriteLine(Compare<int>.compareGeneric(4, 7));
Console.WriteLine(Compare<string>.compareGeneric("i", "ab"));
}

如果定义一个能够比较所有不同类型(int, float, string等)的方法,可以如以上代码那样,定义一个泛型类Compare,T为类型参数,where为语句约束,约束类型参数T必须继承自 IComparable 接口,这样T才可以使用于CompareTo()方法。

拆箱和装箱

  • 装箱是指值类型转换为引用类型的过程,拆箱是引用类型转换为值类型的过程。

  • 装箱过程中,系统会在托管堆中复制一份堆栈中的值类型对象的副本。

  • 拆箱过程中,系统将托管堆中引用类型指向的一装箱数据复制回值类型对象。

本文最后更新于 天前,文中所描述的信息可能已发生改变