C# - 澄清“其中 T:new()”

本文关键字:new 澄清 其中 | 更新日期: 2023-09-27 18:32:07

应该

如何理解以下行?

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

还有这个:

公共类 RssItems : List{}

C# - 澄清“其中 T:new()”

处理泛型时,类型约束定义了使用泛型的方式。 这

where T : new()

意味着它有一个无参数构造函数,允许您使用以下代码:

var something = new T();

在您的代码中。

类型约束意味着T必须具有参数较少的构造函数。请参阅 MSDN 文档有关类型参数约束的信息

更新
public class RssItems : List {}行表示RssItems继承自List。请参见继承(C# 编程指南)

该方法将返回一个类型 T 的对象,该对象是在创建类时使用以下内容定义的:

var x = new SomeClass<T>();

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

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