2012-10-29 17 views
5

Sto cercando di familiarizzare con C# e ho provato il seguente programma: restituisce solo la media dei numeri pari nell'array.Impossibile convertire da un gruppo di metodi a un oggetto - C#

Code SnippetErrors

sarebbe bello se qualcuno potesse evidenziare il problema qui.

+4

Sarebbe molto più semplice se si inserisse il codice come testo. Stavo per lanciarlo in Visual Studio, ma non ho intenzione di ridigitare il codice. Suggerimento: StackOverflow può formattare automaticamente il codice per te se contrassegni una sezione come codice. –

+0

dovresti fare riferimento alla classe che stai cercando di usare in 'msdn' .. – Anirudha

risposta

10

È necessario select.Average() (con i paren).

1

Non stai chiamando Average. dovrebbe essere select.Average()

3

la parentesi mancante () è il motivo per il vostro error.It dovrebbe essere Average()

senza una parentesi, è inteso come un metodo group.The metodo della media potrebbe avere più sovraccarichi e non è chiaro che deve essere invocato un metodo sovraccarico specifico. Ma quando si menziona la parentesi rende l'intenzione più chiara e il metodo viene chiamato.

1

il problema è che, si è dimenticato di includere la parentesi poiché Average è un metodo (tipo di estensione). Un'altra soluzione è quella di utilizzare l'espressione lambda, qualcosa di simile,

var numbers = new[] { 1, 2, 3, 4, 5 }; 
Console.WriteLine(numbers.Where(x => (x % 2) == 0).Average()); 

o

var numbers = new[] { 1, 2, 3, 4, 5 }; 
var select = (from num in numbers where (num % 2) == 0 select num).Average(); 
Console.WriteLine(select); 
1

Si tratta di un'estensione Method quindi dovrebbe essere simile a questo: Average()

con (parentesi())

Problemi correlati