参考列表<>对象里面的静态函数?

时间:2013-09-25 10:03:01

标签: c#

我需要从静态函数内部访问我的'文件'列表。我不需要修改列表的内容,我只需要访问其内容,以便我可以在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;
                }
            }
        }
    }
}

3 个答案:

答案 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 = ....