当前位置:嗨网首页>书籍在线阅读

19-泛型类中的泛型方法

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.5.1 泛型类中的泛型方法

上述例子中的泛型方法存在于非泛型类中,泛型方法的泛型参数直接在方法名称后面声明。也可以先定义泛型类,即在类名称的后面加了一个尖括号,使用这个尖括号来传递占位符(也就是类型参数),再在类中定义泛型方法。

前面的BubbleSort泛型方法也可以这样定义。

01  public class SortHelper<T> where T : IComparable        //实现Bubble Sort算法的类SortHelper
02  {
03           public void BubbleSort(T[] array) {        
04           int length = array.Length;        
05           for (int i=0; i<= length -2;i++) {        
06                  for (int j= length -1; j>=1;j--)        
07                           if (array[j].CompareTo(array[j - 1]) < 0)
                             {   //如果前面的元素较大,交换相邻两个元素
08                                  int temp = array[j];        
09                                  array[j] = array[j - 1];
10                                  array[j - 1] = temp
11                           }
12                  }
13           }        
14  }

上述代码中,因为泛型类已经声明了泛型参数T,可以直接使用下面的语句。

public void BubbleSort(T[] array)

定义泛型类的泛型方法。要调用泛型类的泛型方法时,需先声明泛型类的对象,接着使用泛型类的对象调用泛型方法,与调用普通方法完全一样。代码如下。

01  class Program        //实现Bubble Sort算法的类SortHelper
02  {        
03           static void Main (string[] args) {        
04           SortHelper sorter<int> = new SortHelper<int> ();        
05           int[] array = {8, 2, 4, 6, 10};        
06           sorter.BubbleSort (array);        
07           foreach(int i in array) {   //输出排序结果
08                   Console.Write(“{0 }”,i);        
09                  }
10                  Console.WriteLine();
11                  Console.ReadKey();
12          }
13  }

调用Bubble Sort算法把整型数组array的元素排序,并输出。其中语句:

SortHelper sorter<int> = new SortHelper<int> ();

声明泛型类SortHelper的对象sorter,下面的语句:

sorter.BubbleSort (array);

调用泛型方法BubbleSort。