public Class SortHelper
{
public void BubbleSort(T[] array)
{
int length = array.Length;
for (int i = 0; i < length-2; i++)
{
for (int j = 0; j < length-1; j--)
{
if (array[j] < array[j - 1])
{
T temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}
}
当我们定义一个类,而这个类需要引用它本身以外的其他类型时,我们可以定义有参数的构造函数,然后将它需要的参数从构造函数传进来吗,但是在上面,我们的参数T本身就是一个类型(类似于int、byte、char,而不是我们类型的实例,比如‘1’和a)很显然我们无法在构造函数中传递这个T类型的数组,因为参数都是出现在实例的位置,而T是类型本身,它的位置不对,比如下面的通常的构造函数:
public SortHelper(类型 类型实例名称);
而我们期望的构造函数是:
public SortHelper(类型 );
那么上面这段话,我看的懵懵懂懂,什么叫很显然我们无法在构造函数中传递这个T类型的数组,因为参数都是出现在实例的位置,而T是类型本事,它的位置不对。
public Class SortHelper<T>
不就可以了么?难道我理解错你的问题了?
你把泛型理解为一个占位符,甚至你可以对这个占位符添加约束,让其符合一定要求,比如必须是class,或者必须实现某个接口啥的。
泛型可以在编译时保证代码的安全性,比如你的例子中对泛T实例的大小与比较在没有任何对T约束的情况下是无法编译通过的,因为你的T(可能你贴的代码不完整)可以是任何玩意。
完全不知道你在说什么.我解释一下什么是泛型吧
1.泛型就是一个模版.意思是我将来会指定一个类.但我现在不知道这个类是什么.
2.虽然我现在不知道这个类是什么.但是我有一些操作并不需要知道这个类是什么.比如定义一个数组.从数组里去掉3个(例子)