【问题标题】:Generic method inside non-generic class非泛型类中的泛型方法
【发布时间】:2015-07-30 20:56:48
【问题描述】:

我正在使用 .net 框架 4.0
我想在非泛型类中创建一个泛型方法 但它给了我编译时错误

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

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

约翰·保罗·琼斯也提出了一个问题 Generic Method in non generic class
他在那里提到可以在非泛型类中创建泛型方法。
那么我的代码有什么问题。
是框架版本相关的问题还是我遗漏了什么

【问题讨论】:

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


    【解决方案1】:

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

    将您的方法更改为:

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

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

    【讨论】:

    • F 为我自己工作,我错过了多么愚蠢的事情,谢谢@Farhad
    • @Co.Aden 很高兴为您提供帮助。
    【解决方案2】:

    您需要在方法名称中指定泛型类型&lt;T&gt;,如下所示:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        您需要更改一些代码。请参阅以下内容。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-16
          • 1970-01-01
          • 1970-01-01
          • 2021-11-04
          • 1970-01-01
          • 2017-11-13
          • 2012-03-01
          相关资源
          最近更新 更多