【问题标题】:What does the new() constraint do on a class definition?new() 约束对类定义有什么作用?
【发布时间】:2012-11-28 04:52:54
【问题描述】:

我看到了这个代码示例,想知道new() 约束的目的是什么:

public class Client<T> : IClient where T : IClientFactory, new()
{
    public Client(int UserID){ }
}

【问题讨论】:

    标签: c# oop class inheritance polymorphism


    【解决方案1】:

    这称为“'新'约束”。 Here's the documentation 就可以了。

    新约束指定泛型类声明中的任何类型参数都必须具有公共无参数构造函数。要使用新的约束,类型不能是抽象的。

    (强调我的)

    基本上,每当您在类中的某处创建新的T 时,您都需要它,以确保您只能传递编译器可以创建新实例的东西的。

    【讨论】:

      【解决方案2】:

      new() 表示

      类型参数必须有一个公共的无参数构造函数。什么时候 与其他约束一起使用时,new() 约束必须是 最后指定。

      参考Generic Constraints on MSDN

      【讨论】:

        【解决方案3】:

        ClientT 对象的集合,这些T 对象必须实现IClientFactory 接口并具有公共的无参数构造函数。

        【讨论】:

          猜你喜欢
          • 2015-12-09
          • 1970-01-01
          • 2017-06-21
          • 1970-01-01
          • 1970-01-01
          • 2021-06-19
          • 2019-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多