2011-02-15 58 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]; 
}