【问题标题】:How can a List exist without <T> after it? [closed]List 后面没有 <T> 怎么存在? [关闭]
【发布时间】:2013-03-03 22:47:34
【问题描述】:

我遇到了这种情况,List&lt;&gt; 后面没有指定类型:

List someVar = new List();

但是,当我在 Visual Studio 中尝试此操作时,出现错误。 VS不让我这样声明List是什么原因?

让我告诉你我在哪里看到的:

public override IEnumerable SomeMethod()
        {
            List someVar= new List();
            // more code
            return someVar;
        }

P.S 在联系项目所有者后发现 Wordpress 在 ListIEnumerable 之后删除了标签 &lt;&gt;,所以它实际上应该是 List&lt;SomeClass&gt;IEnumerable&lt;SomeClass&gt;

public override IEnumerable<SomeClass> SomeMethod()
        {
            List<SomeClass> someVar= new List<SomeClass>();
            // more code
            return someVar;
        }

【问题讨论】:

  • 在您的一个引用中是否有一个类声明为 List?
  • @Paddy:不,没有这样的课程。
  • 您使用的是什么版本的 .NET 以及您使用的 using 是什么?
  • 我在基类的重写方法中看到了。看:public override IEnumerable SomeMethod() { ListproduceObjects = new List(); // 更多代码返回生产对象; }
  • @Todo:你展示了一个代码sn-p,它是在哪里声明的?该项目是否包含名称为List 的类?右键单击它和go to definition。我确定这是一个不属于框架的自定义类。

标签: c# list types


【解决方案1】:

没有名为List 的内置类。有ArrayList,但是:单击List 并按f12。这将向您显示它的声明位置。有两种选择:

  • 一个名为List的类List&lt;T&gt;无关已在本地项目中声明;例如:

    class List { ...} // here we go; a class called List
    
  • using 别名(位于文件顶部)已被用于欺骗 List 作为名称;例如:

    using List = System.Collections.Hashtable;
    

    using List = System.Collections.Generic.List<int>;
    

【讨论】:

  • 按 F12 无济于事,因为 VS 无法识别它。
  • @Todo 检查您的项目引用,可能缺少引用的程序集
  • @Todo 我意思在你看到它被使用的项目中按 F12
  • @Mark:实际上我从一个 Wordpress 博客中获取了这段代码,结果发现 Wordpress 在 List 之后删除了 部分,这就是问题所在......否则它是一个普通的通用列表:)
【解决方案2】:

您收到错误消息,因为 .NET Framework 中不存在 List 类。如果您想使用可以容纳任何类型对象的非泛型列表,请使用ArrayList

【讨论】:

    【解决方案3】:

    我不认识它(在List&lt;T&gt; 到达之前,我以为它是ArrayList?)。无论哪种方式,它都是在实现泛型之前发明的旧类。我会使用List&lt;object&gt;

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2011-04-09
      • 1970-01-01
      • 2023-04-09
      • 2013-06-24
      相关资源
      最近更新 更多