前言
在编写程序过程中,会遇一些问题,如:功能非常相似但处理的数据类型不一样,这时我们会分别写多个方法来处理不同的数据类型。.NET为解决这个问题,在NET 3.5(基于CLR 2.0)提供了泛型这一新特性。本篇文章对泛型的定义和使用进行讲解。
泛型
借用泛型,可以根据要处理的精确数据类型定制方法、类、结构或接口。泛型的优点包括:代码的可重用性增加,类型安全性提高。泛型在C#中有很重要的地位。
一、泛型定义
泛型是指在编写类或方法时延迟指定数据类型,直到实际使用时才进行指定,达到同一个类或方法处理不同数据的技术。泛型是为所存储或使用的一个或多个类型具有占位符(类型参数)的类、结构、接口和方法。泛型方法可将其类型参数用作其返回值的类型或用作其参数之一的类型。
示例:
using System;
namespace Fountain.Net.Base.Sample
{
public class GenericClass<T>
{
public T GenericField { get; set; }
/// <summary>
/// 泛型方法:方法带<>和类型参数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="message"></param>
public void Message<T>(T message)
{
Console.WriteLine("GenericField值={0}", GenericField);
Console.WriteLine("GenericField值类型是= {0}", GenericField.GetType().FullName);
Console.WriteLine();
Console.WriteLine("方法参数值={0}", message);
Console.WriteLine("方法参数是={0}",message.GetType().FullName);
}
}
}
using System;
namespace Fountain.Net.Base.Sample
{
internal class Program
{
static void Main(string[] args)
{
// 泛型类的声明
GenericClass<string> generic= new GenericClass<string>();
generic.GenericField = "A string";
// 泛型方法的调用
generic.Message<int>(6);
Console.ReadLine();
}
}
}
二、泛型术语
.NET 中的泛型用到的一些术语:
1、泛型类型定义:是用作模板的类、结构或接口声明,带有可包含或使用的类型的占位符。
2、泛型类型参数:也称类型参数,是泛型类型或方法定义中的占位符。
3、构造泛型类型:也称构造类型,是为泛型类型定义的泛型类型参数指定类型的结果。
4、泛型类型实参:是被泛型类型参数所替代的任何类型。
5、泛型约束:是对泛型类型参数的限制。
6、泛型方法定义:是具有两个形参列表的方法,泛型类型形参列表和形参列表。类型形参可作为返回类型或形参类型出现。
三、泛型应用范围
泛型应用范围主要有四种,分别是泛型类、 泛型方法、泛型接口、<