2013-03-15 11 views
5

我碰到這種情況List沒有在<>後指定類型:如何在沒有<T>之後存在列表?

List someVar = new List(); 

然而,當我嘗試這在Visual Studio我得到一個錯誤。 VS不讓我這樣宣佈List的原因是什麼?

讓我告訴你,我看到了它:

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

PS事實證明該項目的業主WordPress的ListIEnumerable後條紋出標籤<>接觸後,因此它實際上應該是List<SomeClass>IEnumerable<SomeClass>

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

是否有作爲列表的引用了一個聲明的類? – Paddy 2013-03-15 09:27:49

+0

@ Paddy:不,沒有這樣的班級。 – Todo 2013-03-15 09:31:49

+0

您使用的是什麼版本的.NET,以及您使用的是什麼? – Arran 2013-03-15 09:34:19

回答

1

我不承認它(我認爲這是ArrayListList<T>到來之前?)。無論哪種方式,這將是一個古老的類在仿製藥實施之前發明的。我會用List<object>

2

由於在.NET Framework中不存在List類,所以出現錯誤。如果要使用可以容納任何類型對象的非通用列表,請使用ArrayList

7

沒有內置類List。有ArrayList,但是:點擊List並按f12。這會告訴你它在哪裏宣佈。有兩個選項:

  • 一個名爲List類,它是毫無關係與List<T>已在本地項目已申報;例如:

    class List { ...} // here we go; a class called List 
    
  • 一個using別名(在該文件的頂部)已被用於欺騙List作爲名稱;例如:

    using List = System.Collections.Hashtable; 
    

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

因爲VS無法識別,所以按下F12並不合適。 – Todo 2013-03-15 09:46:31

+0

@Todo檢查你的項目引用,可能有一個引用的程序集丟失 – ken2k 2013-03-15 09:47:17

+1

@Todo I *意思是*在你看到它被使用的項目中按下F12 – 2013-03-15 09:52:12

相關問題