2011-11-04 8 views
5

En C#, ¿cómo llamo a una función que devuelve una lista?En C#, ¿cómo llamo a una función que devuelve una lista?

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

No está claro lo que estás tratando de hacer. Solo llamar a un método está bien, pero ¿qué intentas * hacer * con los resultados? Actualmente está llamando a 'ForEach' en una lista vacía en Main ... –

Respuesta

21

Hay varias cosas mal con su código:

  • va a crear una lista vacía, y luego llamar ForEach en él. Eso no va a hacer nada.
  • Está tratando de llamar al WildcardFiles en una cadena, cuando no es un método de cadena.
  • Está intentando llamar al WildcardFiles, que es un método de instancia en cualquiera que sea su tipo de declaración, pero sin ninguna instancia de ese tipo.
  • usted está tratando de llamar WildcardFiles sin pasar en un argumento para el parámetro first
  • Estás ignorando el valor de retorno de la llamada a WildcardFiles
  • WildcardFiles ignora su parámetro

Ahora sospechoso que realmente quería algo como:

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

Me pareció que quería hacer un tipo de cosas' SelectMany'. Aunque tu idea parece una posibilidad también. – Gabe

+0

El compilador no acepta esta línea: List range = WildcardFiles(); –

+0

@CN: Debería - Acabo de compilarlo en mi máquina. Sin embargo, necesita una directiva 'using' para' System.Collections.Generic'. ¿Qué mensaje de error estás recibiendo? –

1

No sé exactamente lo que quiere pero actualmente debe hacer:

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

y hacer que su método sea estático para funcionar.

+0

@Kyle Trauberman ¿por qué ejemplo? como escribí deberíamos tener un método estático, antes de bajar la prueba probar lo que dije y luego decirme qué está mal. –

+0

Hay más que eso. Presumiblemente, uno querría hacer algo con la lista devuelta por 'WildcardFiles()'. –

+1

Me perdí tu última oración. Lo siento. Eliminé el voto negativo. –

Cuestiones relacionadas