2011-11-04 16 views
5

In C#, come si chiama una funzione che restituisce un elenco?In C#, come si chiama una funzione che restituisce un elenco?

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

Non è chiaro cosa si stia tentando di fare. Basta chiamare un metodo va bene, ma cosa stai provando a * fare * con i risultati? In questo momento stai chiamando 'ForEach' su una lista vuota in Main ... –

risposta

21

Ci sono varie cose sbagliate con il tuo codice:

  • si sta creando una lista vuota, e quindi chiamando ForEach su di esso. Questo non farà nulla.
  • Si sta provando a chiamare WildcardFiles su una stringa, quando non è un metodo di stringa.
  • Si sta provando a chiamare WildcardFiles che è un metodo di istanza in qualunque sia il proprio tipo di dichiarazione, ma senza alcuna istanza di quel tipo.
  • si sta cercando di chiamare WildcardFiles senza passare in un argomento per il parametro first
  • Stai ignorando il valore di ritorno della chiamata a WildcardFiles
  • WildcardFiles ignora il suo parametro

Ora sospetto si voleva davvero qualcosa di simile:

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

Mi sembrava come se volesse fare un tipo di cosa' SelectMany'. La tua idea sembra anche una possibilità, però. – Gabe

+0

Il compilatore non accetta questa riga: Lista range = WildcardFiles(); –

+0

@CN: Dovrebbe - l'ho appena compilato sulla mia macchina. Però hai bisogno di una direttiva 'using' per' System.Collections.Generic'. Che messaggio di errore ricevi? –

1

Non so che cosa esattamente si vuole, ma attualmente si dovrebbe fare:

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

e rendere il vostro metodo statico a lavorare.

+0

@Kyle Trauberman perché istanza? come ho scritto dovremmo avere un metodo statico, prima di eseguire il test di downvoting, cosa ho detto e poi dirmi cosa c'è che non va. –

+0

C'è molto di più. Presumibilmente si vorrebbe fare qualcosa con la lista restituita da 'WildcardFiles()'. –

+1

Ho perso l'ultima frase. Scusate. Ho rimosso il downvote. –

Problemi correlati