# 泛型 ## 可空类型:Nullable 对于引用类型的变量来说,如果未对其赋值,在默认情况下是 Null 值,对于值类型的变量,如果未赋值,整型变量的默认值为 0。 但通过 0 判断该变量是否赋值了是不太准确的。 在 C# 语言中提供了一种泛型类型(即可空类型 (System.Nullable\))来解决值类型的变量在未赋值的情况下允许为 Null 的情况。 定义可空类型变量的语法形式如下。 ```C# System.Nullable 变量名; ``` 其中,Nullable 所在的命名空间 System 在 C# 类文件中默认是直接引入的,因此可以省略 System,直接使用 Nullable 即可;T 代表任意类型,例如定义一个存放 int 类型值的变量,代码如下。 ```C# Nullable a; ``` 这样,可以将变量 a 的值设置为 Null。即: ```C# Nullable a = Null; ``` 除了使用上面的方法定义可空类型变量以外,还可以通过如下语句定义一个 int 类型的可空类型变量。 ```C# int? a ``` 从上面的定义可以看出,int? 等同于 Nullable\。 此外,在使用可空类型时也可以通过 HasValue 属性判断变量值是否为 Null 值。 ## 泛型类 C# 语言中泛型类的定义与泛型方法类似,是在泛型类的名称后面加上\,当然,也可以定义多个类型,即“”。 具体的定义形式如下。 ```C# class 类名 { //类的成员 } ``` 这样,在类的成员中即可使用 T1、T2 等类型来定义 ## 泛型方法 在 C# 语言中泛型方法是指通过泛型来约束方法中的参数类型,也可以理解为对数据类型设置了参数。 如果没有泛型,每次方法中的参数类型都是固定的,不能随意更改。 在使用泛型后,方法中的数据类型则有指定的泛型来约束,即可以根据提供的泛型来传递不同类型的参数。 定义泛型方法需要在方法名和参数列表之间加上<>,并在其中使用 T 来代表参数类型。 当然,也可以使用其他的标识符来代替参数类型, 但通常都使用 T 来表示。下面通过实例来演示泛型方法的使用。