2012-06-06 14 views
48

Próbuję następujący kod. Wskazano linię z błędem.Jak zwrócić literał tablicy w języku C#

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

Jak mogę zwrócić literał literowy jak literał ciągu?

+0

Warto też nic, że C# nie faktycznie mają literały tablicowe, ale składnia inicjalizacji tablic - do której odnosi się zaakceptowana odpowiedź. Literały wyróżniają się tym, że można je bezpośrednio serializować i można je przypisać do pól "const". Tak nie jest w przypadku składni inicjalizacji macierzy. –

Odpowiedz

99

Zwraca tablicę int tak:

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

Można również implicitly type the array - kompilator będzie wnioskować należy int[] ponieważ zawiera tylko int wartości:

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

Woah ho, nie wiedziałem, że możesz domyślnie wpisać tablice! +1 –

+1

Znalazłem, że 'new int [] {0,0,0}' również działa. W mojej opinii byłoby to bardziej przejrzyste. – sgarg

+0

@sgarg To wydaje się być identyczne z odpowiedzią. I nie zgadzam się, niejawne wpisanie tablicy oznacza, że ​​zmiana stałych na zmiennoprzecinkowe automatycznie dostanie poprawny typ tablicy. – NetMage

11

Blorgbeard jest poprawna, ale możesz także pomyśleć o używaniu nowej klasy Tuple .NET 4.0. Zauważyłem, że łatwiej jest pracować, gdy masz określoną liczbę przedmiotów do zwrócenia. Tak jak w przypadku, gdy zawsze potrzebujesz zwrócić 3 przedmioty w twojej tablicy, 3-intowa krotka wyjaśnia, co to jest.

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

lub po prostu

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

Jeśli masz zmienną liczbę elementów, ale potrzebujesz dodatkowej funkcjonalności, możesz również: 'zwrócić nową listę (nowa int [] {0,0,0});' – Dave

+1

@Dave nie ma listy "Lista (Wymienna .Repeat (0, 3)) "lepiej? – NetMage

+0

@NetMage Byłoby lepiej, gdybyś chciał zmienić liczbę przedmiotów, z pewnością. – Dave

7

jeśli tablica ma stały rozmiar i wante aby powrócić nową wypełnioną zerami

return new int[3]; 
Powiązane problemy