泛型

简介: 泛型

泛型实现了类型参数化,达到代码重用的目的,通过类型参数化来实现同一份代码上操作多种类型。泛型相当于类型占位符,定义类或方法时使用替代符代表变量类型,当使用类或者方法时再具体指定变量。

泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候,例如:分布式缓存队列、EF的延迟加载等等。换句话说,泛型允许我们编写一个可以与任何数据类型一起工作的类或方法。我们可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。

在泛型类型或方法定义中,类型参数是在其实例化泛型类型的一个变量时,客户端指定的特定类型的占位符。 泛型类无法按原样使用,因为它不是真正的类型;它更像是类型的蓝图。 若要使用 ,客户端代码必须通过指定尖括号内的类型参数来声明并实例化构造类型。 此特定类的类型参数可以是编译器可识别的任何类型。 可创建任意数量的构造类型实例,其中每个使用不同的类型参数。

泛型类和泛型接口的基本语法:

class 类名<泛型占位字母>
interface 接口名<泛型占位字母>

泛型函数的基本语法:

函数名<泛型占位字母>(参数列表)//需要主义的是,泛型占位字母可以有多个,但是需要用逗号隔开

泛型的特性

使用泛型是一种增强程序功能的技术,具体表现在以下几个方面:

它有助于我们最大限度地重用代码、保护类型的安全以及提高性能。

我们可以创建泛型集合类。.NET 框架类库在 System.Collections.Generic 命名空间中包含了一些新的泛型集合类。我们可以使用这些泛型集合类来替代 System.Collections 中的集合类。

我们可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

我们可以对泛型类进行约束以访问特定数据类型的方法。

关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。


泛型委托

我们可以通过下列代码来类型参数定义泛型委托。

delegate T NumberChanger<T>(T n);

泛型的作用

1. 不同类型对象的相同逻辑处理就可以选择泛型。

2. 使用泛型可以一定程度避免装箱拆箱。

需要注意的是,泛型真正起作用的时候,是在使用它的时候。

目录
相关文章
|
2月前
|
安全 算法 Java
深入理解泛型
深入理解泛型
|
2月前
|
安全 编译器 Scala
何时需要指定泛型:Scala编程指南
本文是Scala编程指南,介绍了何时需要指定泛型类型参数。泛型提供代码重用和类型安全性,但在编译器无法推断类型、需要提高代码清晰度、调用泛型方法或创建泛型集合时,应明确指定类型参数。通过示例展示了泛型在避免类型错误和增强编译时检查方面的作用,强调了理解泛型使用时机对编写高效Scala代码的重要性。
27 1
何时需要指定泛型:Scala编程指南
|
2月前
|
Java 编译器 语音技术
泛型的理解
泛型的理解
15 0
|
2月前
|
存储 算法 容器
什么是泛型?
什么是泛型?
14 0
|
2月前
|
Java
什么是泛型, 泛型的具体使用
什么是泛型, 泛型的具体使用
16 0
|
2月前
|
存储 安全 Java
这还是你认识的泛型吗???!
这还是你认识的泛型吗???!
36 0
|
2月前
|
存储 Java
什么是泛型, 泛型的具体使用?
什么是泛型, 泛型的具体使用?
|
8月前
|
存储 算法 编译器
泛型的讲解
泛型的讲解
44 0
|
10月前
|
Java 编译器
|
存储 C#
【C#】什么是泛型?
泛型是C#编程中一个非常重要的概念,它能够编写更加通用、灵活和可重用的代码,能够编写可以在不同类型之间工作的代码,同时还可以提高代码的效率和可维护性。在本文中,我们将探讨泛型及其在C#编程中的应用。
70 0

热门文章

最新文章