2012-06-06 15 views
48

Sto provando il seguente codice. La linea con l'errore è indicata.Come restituire un array letterale in C#

int[] myfunction() 
{ 
    { 
     //regular code 
    } 
    catch (Exception ex) 
    {      
     return {0,0,0}; //gives error 
    } 
} 

Come posso restituire un array letterale come stringhe letterali?

+0

E 'anche da notare che C# in realtà non avere letterali di matrice, ma una sintassi di inizializzazione dell'array - a cui si riferisce la risposta accettata. I letterali sono speciali in quanto possono essere serializzati direttamente e possono essere assegnati ai campi 'const'. Questo non è il caso con la sintassi di inizializzazione dell'array. –

risposta

99

restituire un array di int come questo:

return new int [] { 0, 0, 0 }; 

È anche possibile implicitly type the array - il compilatore dedurre che dovrebbe essere int[] perché contiene solo int valori:

return new [] { 0, 0, 0 }; 
+4

Woah ho, non sapevo che potevi digitare implicitamente matrici! +1 –

+1

Ho trovato che 'new int [] {0,0,0}' funziona anche. Sarebbe più chiaro a mio avviso. – sgarg

+0

@sgarg Sembra essere identico alla risposta. E non sono d'accordo, la digitazione implicita della matrice significa che la modifica delle costanti in virgola mobile otterrebbe automaticamente il tipo di array corretto. – NetMage

11

Blorgbeard è corretta, ma potresti anche pensare di usare la nuova classe Tuple per .NET 4.0. Ho scoperto che è più facile lavorare con un numero di elementi da restituire. Come in se hai sempre bisogno di restituire 3 elementi nel tuo array, una tupla 3-int chiarisce di cosa si tratta.

return new Tuple<int,int,int>(0,0,0); 

o semplicemente

return Tuple.Create(0,0,0); 
+2

Se si dispone di un numero variabile di elementi ma si desiderano funzionalità aggiuntive, è anche possibile: 'restituire la nuova lista (new int [] {0,0,0});' – Dave

+1

@Dave non 'Elenco (Enumerable . Ripeti (0, 3)) 'stai meglio? – NetMage

+0

@ NetMage Sarebbe meglio se voleste variare il numero di articoli, certamente. – Dave

7

se l'array ha una dimensione fissa e si Wante di restituire un nuovo pieno di zeri

return new int[3]; 
Problemi correlati