【问题标题】:Generic function and new constraint泛型函数和新约束
【发布时间】:2015-04-27 06:03:46
【问题描述】:

如何使用两个参数,而一个继承自 IProject 而另一个具有 new() 约束?以下内容未通过编译,并出现 “无法创建变量类型 'T' 的实例,因为它没有 new() 约束”错误。

public static T CreateNewProject<T, V>(string token, string projectName) where V : IProject<T>, T new()
{
    T project = new T(); 
}

【问题讨论】:

    标签: c# .net oop generics interface


    【解决方案1】:

    如果要对多个参数应用约束,则需要添加第二个where 为:

    where V : IProject<T> 
    where T : new()
    

    而且,你需要从你的方法中返回一些东西:

    public static T CreateNewProject<T, V>(string token, string projectName) 
        where V : IProject<T> 
        where T : new()
    {
        return new T();
    }
    

    P.S:为了应用new 约束,类型参数必须有一个公共无参数构造函数。

    阅读This了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多