C#的泛型

  C#的泛型

  • 泛型的概念

定义:泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。(也就是说泛型是可以与任何数据类型一起工作的类或方法)模块内高内聚,模块间低耦合。

泛型的使用:当我们的类/方法不需要关注调用者传递的实体是什么(公共基类工具这个时候就可以使用泛型。

注意:

集合中的项允许是 object 型的值,因此可以存放任意类型的值,无法确保存入集合中的值都是同一类型,而导致在处理时发生异常。

  • 可空类型

对于引用类型的变量来说,如果未对其赋值,在默认情况下是 Null 值,对于值类型的变量,如果未赋值,整型变量的默认值为 0。 但通过 0 判断该变量是否赋值了是不太准确的。在 C# 语言中提供了一种泛型类型(即可空类型 (System.Nullable))来解决值类型的变量在未赋值的情况下允许为 Null的情况。

可空类型的定义:

System.Nullable变量名;

属性或方法

作用

HasValue

若变量有值则为True,若为null则为false

Value

返回可空类型变量中储存的真正的值,当HasValue为True

  • 泛型的方法

在 C# 语言中泛型方法是指通过泛型来约束方法中的参数类型,也可以理解为对数据类型设置了参数。

如果没有泛型,每次方法中的参数类型都是固定的,不能随意更改。在使用泛型后,方法中的数据类型则有指定的泛型来约束,即可以根据提供的泛型来传递不 同类型的参数。

泛型方法的定义:

定义泛型方法的需要在方法名和参数列表之间加上<>,并在其中使用T来代表参数类型。

注意:

C#中泛型方法中只能使用object类具有的方法

  • 泛型类

C# 语言中泛型类的定义与泛型方法类似,是在泛型类的名称后面加上,当然,也可以定义多个类型,即“”。

  • 泛型中的数据约束

泛型中的数据约束可以指定泛型类型的范围。

若给T类型的数据约束struct,则T只能接受struct的子类类型,否则编译错误。

  • 泛型的集合

C# 语言中泛型集合是泛型中最常见的应用,主要用于约束集合中存放的元素。

由于在集合中能存放任意类型的值,在取值时经常会遇到数据类型转换异常的情况,因此推 荐在定义集合时使用泛型集合。 泛型集合中主要使用 List 和 Dictionary

Dictionary是 HashTable相对应的泛型集合,其存储数据的方式与哈希表相似,通

过键/值来保存元素,并具有泛型的全部特征,编译时检查类型约束,读取时无须类型转换。

你可能感兴趣的:(c#,linq,开发语言)