2011-02-15 61 views
1

嗨 我有一個關於C#中的列表的一般問題。 這裏是我的代碼:有關列表的一般問題

public List<string> Example() 
    { 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_FailurePredictStatus"); 

     List<string> output = new List<string>(); 

     foreach (ManagementObject queryObj in searcher.Get()) 
     { 
      output.Add(System.Convert.ToString(queryObj["InstanceName"])); 
     } 

     return output; 
    } 

,現在我想給第一輸入了

public FormMain() 
    { 

     Debug.WriteLine(Example(1)); 


    } 

的方法「輸出」沒有重載採用1個參數

我希望你可以給我解釋一下這個和對不起我的問題,我是一個absoltue初學者

最好的祝願

回答

1

井輸出是一個列表。既然你已經將Example編碼爲一個方法,它返回一個列表,要訪問它,你需要使用空括號的方法語法來調用它。返回值是一個List<string>的實例。如果您在輸入Example()後點擊小數點,您將在智能感知中看到此對象的成員。其中一個將顯示爲方括號[]。這是你需要用來訪問列表中的任何內容的成員。您提供的值是從零開始的,也就是從零開始(對於列表中的第一個項目),並從那裏開始增加。用方括號,括號不

Debug.WriteLine(Example()[1]);

:所以要訪問列表的第一個項目,你會寫。您仍然需要Example()中的圓括號,因爲它是一種方法...如果你重新編碼它作爲一個屬性:

public List<string> Example  
{  
    get 
    { 
     ManagementObjectSearcher searcher = 
     new ManagementObjectSearcher("root\\WMI", 
      "SELECT * FROM MSStorageDriver_FailurePredictStatus");   
     List<string> output = new List<string>();   
     foreach (ManagementObject queryObj in searcher.Get()) 
      output.Add(System.Convert.ToString(queryObj["InstanceName"])); 
     return output; 
    }    
} 

那麼你就不需要這些括號可以只寫

Debug.WriteLine(Example[1]);

1

嘗試:

Debug.WriteLine(Example()[1]);

編輯: 如果你正在尋找的第一個元素,你應該使用而不是爲別人指出。

+0

哇,謝謝,我試圖解決這個問題HOUS – Kbert 2011-02-15 09:19:46

0

你應該使用:

Example()[0]; 

Example()返回List<string>的方法,您可以訪問通過索引直接,像mylist[0]它的元素。第一個元素在C#中的索引爲0而不是1。

0

Bolu的回答很好,除了它應該是0而不是1 - c#List並且數組是從零開始的。

0

我認爲你得到的錯誤是:No overload for method 'Example' takes 1 arguments而不是No overload for method 'output' takes 1 arguments

它表示方法Example不準備接受1個參數。

是能夠做到這一點:

Debug.WriteLine(Example()[0]); 

既然你說第一個輸出,這就是爲什麼該指數爲零這裏。

1

這個怎麼樣?

using System.Linq; 

public List<string> Example() 
{ 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_FailurePredictStatus"); 

    return searcher.Get().ToList(); 
} 

public void Test() 
{ 
    var myList = Example(); 
    var element = myList[0]; 
}