2011-11-04 8 views
5

C#では、リストを返す関数をどのように呼び出すのですか?C#では、リストを返す関数をどのように呼び出すのですか?

static void Main(string[] args) 
    { 
     List<string> range = new List<string>(); 
     range.ForEach(item => item.WildcardFiles()); //this is not working    
    } 

    List<string> WildcardFiles(string first) 
    { 
     List<string> listRange = new List<string>(); 
     listRange.Add("q"); 
     listRange.Add("s"); 

     return listRange; 
    } 
+7

あなたがしようとしていることは明確ではありません。メソッドを呼び出すだけでも問題ありませんが、結果を*何にしようとしていますか?あなたは現在、メインの空のリストで 'ForEach'を呼び出しています... –

答えて

21

あなたのコードと間違って様々なものがあります。

  • あなたは空のリストを作成し、それにForEachを呼んでいるが。それは何もするつもりはない。
  • WildcardFilesは、文字列のメソッドではない場合は、文字列にコールしようとしています。
  • 宣言型が何であっても、その型のインスタンスがなくても、インスタンスメソッドであるWildcardFilesを呼び出そうとしています。あなたはWildcardFiles
  • WildcardFilesへの呼び出しの戻り値を無視しているfirstパラメータ
  • の引数に渡さずにWildcardFilesを呼び出すようにしようとしている
  • は今そのパラメータ

を無視I 容疑者あなたは本当に次のようなものを望んでいた:

static void Main(string[] args) 
{ 
    List<string> range = WildcardFiles(); 
    foreach (string item in range) 
    { 
     // Do something with item 
    } 
} 

static List<string> WildcardFiles() 
{ 
    List<string> listRange = new List<string>(); 
    listRange.Add("q"); 
    listRange.Add("s"); 

    return listRange; 
} 
+0

' SelectMany'タイプのことをしたいと思っていたようです。あなたのアイデアも可能性のように見えます。 – Gabe

+0

コンパイラはこの行を受け付けません。リスト range = WildcardFiles(); –

+0

@CN:それは私のマシン上でコンパイルしたばかりです。しかし、 'System.Collections.Generic'に' using'ディレクティブが必要です。どのようなエラーメッセージが表示されますか? –

1

私は正確にあなたが何を望んでいるのか分かりませんが、現在はあなたがすべきです:

range.ForEach(item => WildcardFiles(item)); 

あなたのメソッドは動作するように静的にしてください。

+0

@Kyle Traubermanなぜインスタンス?私が書いたように、私が言ったことをテストする前に、静的メソッドを持っていなければなりません。 –

+0

これ以上のことがあります。おそらく、 'WildcardFiles()'によって返されたリストを使って何かをしたいと思うでしょう。 –

+1

私はあなたの最後の文を逃しました。ごめんなさい。私はdownvoteを削除しました。 –

関連する問題