工厂与泛型什么“T:new()”的意思?

时间:2014-04-13 10:55:46

标签: c# generics

更新:我的问题是为什么它在工厂的背景下有用?

我偶然发现了这篇文章http://weblogs.asp.net/gmilano/archive/2005/07/29/420980.aspx

  public interface IFactory<T>
  {
        T Create();
  }

  public class Factory<T> : IFactory<T> where T : new()
  {
        public T Create()
        {
              return new T();
        }
  }

T:new()的含义是什么?为什么它在工厂的背景下有用?

创建某个类的实例的语法是什么?

3 个答案:

答案 0 :(得分:3)

where T : new()表示类型T必须具有无参数的公共构造函数。

通常,当您想要实例化泛型类型时,您将使用它。

答案 1 :(得分:2)

where T : new()是一个约束,这意味着类型参数T必须具有公共无参数构造函数。

答案 2 :(得分:1)

T:New()表示应作为参数传递给泛型类的类型应具有公共默认值parameterless constructor