-3

我需要从静态函数内部访问我的“文件”列表。我不需要修改列表的内容,我只需要访问它的内容,这样我就可以在 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;
                }
            }
        }
    }
}
4

3 回答 3

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();
于 2013-09-25T10:06:14.660 回答
1

在静态方法中,您只能使用静态字段和属性 ( msdn )。

静态方法和属性不能访问其包含类型中的非静态字段和事件,并且它们不能访问任何对象的实例变量,除非它在方法参数中显式传递。

将文件更改为:

static List<string> files = new List<string>();
于 2013-09-25T10:06:22.203 回答
0

List应该是静态的

static List<string> files = ....
于 2013-09-25T10:07:27.093 回答