开发工具与关键技术:Visual Studio
作者:邹铭霞
撰写时间:2020年4月28日
泛型的作用:是类型参数化,类型动态化(使用的时候仅仅是指定类型而已)
用的时候是固定一个确定的类型,没有使用的时候是可以任意类型的代表
C#提供了五种泛型:类,接口,委托,结构和方法。
注意:前面四种是类型,而方法是成员。
泛型允许您编写一个可以与任何数据类型一起工作的类或方法。
可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。
泛型结构
namespace Generic{
struct date<T>
{
private T _date;
public date(T value)
{
_date = value;
}
public T Date
{
get { return _date; }
set { _date = value; }
}
}
class Program{
static void Main(string[] args){
var intdate = new date<int>(10);
var stringdate = new date<string> ("\nhello,Generic");
Console.Write(intdate.Date);
Console.Write(stringdate.Date);
Console.ReadLine();
}
}
}
泛型多类型
namespace Generic{
class Program
{
class multiple<T, TT>
{
T[] num = new T[3];
public multiple(T v0,T v1,T v2){
num[0] = v0; num[1] = v1; num[2] = v2;
}
public void print()
{
Console.Write("{0},\t{1},\t{2}", num[0] ,num[1], num[2]);
Console.Write("\n");
}
}
class Program
{
static void Main(string[] args)
{
var intmultiple = new multiple<int, string>(2, 5, 6);
var strmultiple = new multiple<string, double>("a1", "a2", "a3");
intmultiple.print();
strmultiple.print();
Console.ReadLine();
}
}
}
结果:
泛型(方法)
namespace Generic{
static public void ReversePrint<T>(T[] arr)
{
Array.Reverse(arr);//反转整个一维数组元素的顺序
foreach (T item in arr)
Console.Write("{0},", item.ToString());
Console.WriteLine();
}
class Program{
static void Main(string[] args)
{
var intArray = new int[] { 6, 4, 9, 4, 6, 3 };
var stringArray = new string[] { "d1", "d3", "f3", "r4" };
var doubleArray = new double[] { 3.111, 4.485, 4.48644, 8.4996 };
Program.ReversePrint<int>(intArray);
Program.ReversePrint(intArray);
Console.ReadLine();
}
}
}
结果: