我們再來看泛型方法,C#的泛型機制只支持在方法申明上包含類型參數,也即是泛型方法。特別注意的是,泛型不支持在除了方法以外的其他類/接口成員上使用類型參數,但這些成員可以被包含在泛型類型中,並且可以使用泛型類型的類型參數。還有一點需要說的就是,泛型方法可以在泛型類型中,也可以存在於非泛型類型中。下面我們分別看一下泛型類型的申明,調用,重載和覆蓋。
using System;
using System.Collections.Generic;
using System.Text;
namespace GenericTest
{
class GenericClass
{
//申明一個泛型方法
public T getvalue<T>(T t)
{
return t;
}
//調用泛型方法
//注意:在調用泛型方法時,對泛型方法的類型參數實例化
public int useMethod()
{
return this.getvalue<int>(10);
}
//重載getvalue方法
public int getvalue(int i)
{
return i;
}
}
//下面演示覆蓋
//要注意的是,泛型方法被覆蓋時,約束被默認繼承,不需要重新指定約束關系
abstract class Parent
{
public abstract K TEST<K, V>(K k, V v) where K : V;
}
class Child : Parent
{
public override T TEST<T, S>(T t, S s)
{
return t;
}
}
}