我需要从静态函数内部访问我的'文件'列表。我不需要修改列表的内容,我只需要访问其内容,以便我可以在foreach循环中循环它。我是C#的新手,但是凭借其他语言的知识我认为我需要创建一个文件列表的实例?我想看看如何制作一个声明的List<>的实例但没有找到任何东西。
非常感谢任何帮助!
List<string> files = new List<string>();
private static async Task Search()
{
string input = "<root>value</root>";
using (XmlReader r = XmlReader.Create(new StringReader(input), new XmlReaderSettings() { Async = true }))
{
foreach (string file in files)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
while (await r.ReadAsync())
{
switch (r.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine(r.LocalName);
break;
case XmlNodeType.Text:
Console.WriteLine(await r.GetValueAsync());
break;
}
}
}
}
}
答案 0 :(得分:2)
这是辅助方法的模式:
private static async Task Search(List<string> files){
//...
}
//Then just use like this
Search(files);
您还可以使用一些扩展方法来实现此目的:
public static class StringListExtension {
public static async Task Search(this List<string> files){
//...
}
}
//Then just use like this
files.Search();
答案 1 :(得分:1)
在静态方法中,您只能使用静态字段和属性(msdn)。
静态方法和属性无法访问非静态字段和 包含类型的事件,他们无法访问实例 任何对象的变量,除非它在方法中显式传递 参数。
将文件更改为:
static List<string> files = new List<string>();
答案 2 :(得分:0)
您的List
应该是静态的
static List<string> files = ....