非泛型类中的泛型方法

时间:2015-05-19 06:57:26

标签: c# .net generics .net-4.0

我正在使用.net framework 4.0
我想在非泛型类中创建泛型方法 但它给了我时间错误

错误:类型或命名空间名称' T'找不到(你错过了使用指令或汇编引用吗?)

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

还有一个问题由 John Paul Jones 提出 Generic Method in non generic class
在那里他提到可以在非泛型类中创建泛型方法 然后我的代码出了什么问题。
它是与框架版本相关的问题还是我错过了什么

4 个答案:

答案 0 :(得分:6)

您的方法不是通用的。 generic method是使用 type parameters 声明的方法。

将您的方法更改为:

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

是,您可以在两个级别应用泛型类型。您可以在方法级别和类级别上应用泛型类型(两者都是可选的)。如上例所示,您在方法级别应用泛型类型,因此,您还必须在方法返回类型和方法名称上应用泛型。

您需要更改一些代码。见以下。

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