关于列表的一般问题

时间:2011-02-15 09:13:55

标签: c#

您好 关于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));


    }

方法'output'没有重载需要1个参数

我希望你能解释我这个并抱歉我的问题,我是一个绝对的初学者

祝福

6 个答案:

答案 0 :(得分:1)

尝试:

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

修改 如果你正在寻找第一个元素,你应该使用 0 而不是其他人指出的 1

答案 1 :(得分:1)

输出井是一个列表。由于您已将Example编码为返回列表的方法,因此您需要使用带有空括号的方法语法来调用它。返回值是List<string>的实例。如果在键入Example()后点击小数点,您将在intellisense中看到此对象的成员。其中一个将显示为方括号,如[]。这是您需要用来访问列表中的任何内容的成员。您将提供的值是从零开始的,即它们从零开始(对于列表中的第一项),并从那里开始增加。因此,要访问列表中的第一项,您需要写:

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]);

答案 2 :(得分: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];
}

答案 3 :(得分:0)

您应该使用:

Example()[0];

方法Example()会返回List<string>,您可以直接通过索引访问其元素,例如mylist[0]。并且第一个元素在C#中具有索引0而不是1。

答案 4 :(得分:0)

Bolu的答案很好,除了它应该是0而不是1-c#List并且数组是从零开始的。

答案 5 :(得分:0)

我认为您得到的错误是:No overload for method 'Example' takes 1 arguments而不是No overload for method 'output' takes 1 arguments

它表示方法Example没有准备好接受1个参数。

能够做到这一点:

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

由于你说的是第一个输出,这就是索引在这里为零的原因。