嗨,我有一个关于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个参数
我希望你能给我解释一下,对于我的问题,我很抱歉,我还是个初学者。
谨致问候
发布于 2011-02-15 17:20:36
好的输出是一个列表。由于您已经将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]);
发布于 2011-02-15 17:17:18
尝试:
Debug.WriteLine(Example()[1]);
编辑:如果你正在寻找第一个元素,你应该使用,而不是其他人指出的1。
发布于 2011-02-15 17:21:47
这个怎么样?
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];
}https://stackoverflow.com/questions/5001672
复制相似问题