理解泛型 T 和Where和 new()的使用

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();
}
}

你可能感兴趣的