非泛型类中的泛型方法

本文关键字:泛型方法 泛型类 | 更新日期: 2023-09-27 17:49:44

我使用的是。net framework 4.0
我想在非泛型类中创建一个泛型方法但是它给了我编译时的错误

错误:类型或命名空间名称'T'无法找到(您是否缺少using指令或程序集引用?)

  public class BlIAllClass
    {
        public static List<T> xyz()
        {
            List<T> cc = new List<T>();
            return cc;
        }
    }
John Paul Jones也问了一个问题非泛型类中的泛型方法
他提到在非泛型类中创建泛型方法是可能的。
那我的代码有什么问题?
是框架版本相关的问题还是我错过了一些

非泛型类中的泛型方法

你的方法不是通用的。泛型方法是用类型参数声明的方法。

将方法改为:

public static List<T> xyz<T>()
{
    List<T> cc = new List<T>();
    return cc;
}

也可以将方法实现更改为:return new List<T>();

您需要在方法名称本身中指定泛型类型<T>,如下所示:

public class BlIAllClass
{
    public static List<T> xyz<T>()
    {
        List<T> cc = new List<T>();
        return cc;
    }
}

是的,有两个级别可以应用泛型类型。您可以在方法级别和类级别应用泛型类型(两者都是可选的)。就像上面的例子一样,你在方法级别应用了泛型类型,所以你必须在方法返回类型和方法名上也应用泛型。

你需要修改一些代码。看到后。

 public static List<T> xyz<T>()
  {
   List<T> cc = new List<T>();
    return cc;
  }

您需要将泛型类型参数添加到方法签名中。

public static List<T> xyz<T>()
        {
            List<T> cc = new List<T>();
            return cc;
        }