如何通过传入类型返回具有泛型类型的类

本文关键字:泛型类型 返回 何通过 类型 | 更新日期: 2023-09-27 17:53:20

我有一个使用泛型类型的类

public class BaseClass<T> {
  public T Data { get; set; }
  public BaseClass(T data) {
    this.Data = data;
  }
  public BaseClass() { }
}

我想创建一个返回BaseClass<T>对象的方法,所以我正在尝试:

public BaseClass<T> NoData() {
  return new BaseClass<T>(null);
}
return NoData<MyTClass>(); 来命名

我得到一个错误的<T>, The type or namespace 'T' cannot be found

可以在c#中实现吗?谢谢!

如何通过传入类型返回具有泛型类型的类

您只需要在方法名中添加一个泛型参数:

public BaseClass<T> NoData<T>() {
  return new BaseClass<T>(null);
}

但是由于您没有指定T是一个类,您需要使用更通用的default(T):

public BaseClass<T> NoData<T>() {
  return new BaseClass<T>(default(T));
}

因为你有一个默认的构造函数,基本上做同样的事情你也可以这样做:

public BaseClass<T> NoData<T>() {
  return new BaseClass<T>();
}