您好 关于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个参数
我希望你能解释我这个并抱歉我的问题,我是一个绝对的初学者
祝福
答案 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]);
由于你说的是第一个输出,这就是索引在这里为零的原因。