-3

静的関数内から「ファイル」リストにアクセスする必要があります。リストの内容を変更する必要はありません。リストの内容にアクセスして、foreach ループでループできるようにするだけです。私は C# にはかなり慣れていませんが、他の言語の知識から考えると、ファイル リストのインスタンスを作成する必要があると思いますか? 宣言された List<> のインスタンスを作成する方法を Google で検索しましたが、何も見つかりませんでした。

どんな助けでも大歓迎です!

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 に答える