泛型
泛型方法
static void Main(string[] args)
{
T Add<T>(T num1, T num2)
{
dynamic numTmp1 = num1;
dynamic numTmp2 = num2;
return numTmp1 + numTmp2;
}
int result = Add(5, 8);
//string result = Add("5", "8");
//string result = Add("Rain", "Bow");
Console.WriteLine("result = " + result);
Console.ReadKey();
}



泛型类
class MyArray<T>
{
T[] arrData = new T[10];
public void Set(T value, int index)
{
arrData[index] = value;
}
public T GetDataByIndex(int index)
{
return arrData[index];
}
}
static void Main(string[] args)
{
MyArray<int> myArr = new MyArray<int>();
myArr.Set(5, 0);
myArr.Set(6, 1);
myArr.Set(7, 2);
myArr.Set(8, 3);
myArr.Set(9, 4);
int value = myArr.GetDataByIndex(3);
Console.WriteLine(value);
MyArray<string> myArrStr = new MyArray<string>();
myArrStr.Set("张三", 0);
myArrStr.Set("李四", 1);
myArrStr.Set("王五", 2);
myArrStr.Set("赵六", 3);
myArrStr.Set("钱七", 4);
string valueStr = myArrStr.GetDataByIndex(3);
Console.WriteLine(valueStr);
}

泛型约束
类
public class 泛型名<T> where T : 类名 // T 必须是引用类型
{
// 类定义
}
public class 泛型名<T> where T : 结构体名// T 必须是值类型
{
// 类定义
}
方法
public T 泛型名<T>() where T : 类名 // 使用where约束T的类型
{
// 方法语句
return null; //return 为空时直接输出
return 数据名 as T; //return 不为空时,需要强转为T类型
}