1 函数
public T DoFunction<T>(string output, T result, params PropertyInfo[] properties);
乱解读:声明函数中有个参数类型不明确,调用的时候再告诉。
2 类
puboic class Test<T>
{
public T obj;
public Test(T obj)
{
this.obj = obj;
}
}
乱解读:声明类中有个成员类型不明确,初始化时候再告诉。
3 Where和 new()的使用
网络解释:在对泛型的约束中,最常使用的关键字有where 和 new。
其中where关键字是约束所使用的泛型,该泛型必须是where后面的类,或者继承自该类。
new()说明所使用的泛型,必须具有无参构造函数,这是为了能够正确的初始化对象
public T FunctionOutput<T>(string output) where T : new();//不限制T的类型 必须具有无参构造函数
public TFunctionOutput FunctionOutput<T>(string output) where TFunctionOutput : FunctionOutput, new();//限制T的类型 必须具有无参构造函数
public T FunctionOutput<T>(Parameter outputParameter, string output);//对T无限制
public class FunctionOutPut
{
private int testint = 0;
public void Test()
{
Console.WriteLine(testint);
}
public static void testT()
{
var tempFunctionOutPut = new FunctionOutPut();
FunctionOutput<FunctionOutPut>("123", tempFunctionOutPut);
}
public static TFunctionOutPut FunctionOutput<TFunctionOutPut>(string output, TFunctionOutPut functionOutPut) where TFunctionOutPut : FunctionOutPut, new()
{
return new TFunctionOutPut();
}
}