C# - 澄清'哪里T:new()'

时间:2012-04-24 11:25:30

标签: c# c#-4.0

如何理解以下行?

public T Execute<t>(RestRequest request) where T : new()

这是以下代码的一部分。

public T Execute<t>(RestRequest request) where T : new()
{
    var client = new RestClient();
    client.BaseUrl = BaseUrl;
    request.RequestFormat = DataFormat.Json;

    // Used on every request
    request.AddParameter("country", "gb", ParameterType.UrlSegment);

    var response = client.Execute<t>(request);
    return response.Data;
}

还有这一个:

  

public class RssItems:List {}

4 个答案:

答案 0 :(得分:4)

当您处理泛型时,类型约束定义了可以使用泛型的方法。在

where T : new()

表示它有一个无参数构造函数,允许您使用代码:

var something = new T();

代码。

答案 1 :(得分:1)

类型约束意味着T必须具有参数less constructor。请参阅Constraints on Type Parameters

上的MSDN文档

<强>更新
public class RssItems : List {}表示RssItems继承自List。见Inheritance (C# Programming Guide)

答案 2 :(得分:0)

您指定T(通用类型)必须具有无参数ctr

答案 3 :(得分:0)

该方法将返回Type T的对象,该对象是在使用:

创建类时定义的
var x = new SomeClass<T>();

部分:T:new()表示类型参数必须具有公共无参数构造函数。与其他约束一起使用时,必须最后指定new()约束。您可以在MSDN页面上的“类型参数约束”

进行检查