So geben Sie ein Array-Literal in C # zurück

87

Ich versuche den folgenden Code. Auf die Zeile mit dem Fehler wird hingewiesen.

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

Wie kann ich ein Array-Literal wie String-Literale zurückgeben?

sgarg
quelle
4
Es ist auch nichts wert, dass C # eigentlich keine Array-Literale hat, sondern eine Array-Initialisierungssyntax - auf die sich die akzeptierte Antwort bezieht. Literale sind insofern besonders, als sie direkt serialisiert und constFeldern zugeordnet werden können. Dies ist bei der Array-Initialisierungssyntax nicht der Fall.
Cwharris

Antworten:

165

Geben Sie ein Array intwie folgt zurück:

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

Sie können das Array auch implizit eingeben. Der Compiler wird daraus schließen, int[]dass es nur intWerte enthalten sollte:

return new [] { 0, 0, 0 };
Blorgbeard ist raus
quelle
6
Woah ho, ich wusste nicht, dass Sie implizit Arrays eingeben können! +1
Chris Sinclair
1
Ich fand das new int [] {0,0,0}funktioniert auch. Es wäre meiner Meinung nach klarer.
Sgarg
3
@sgarg Das scheint mit der Antwort identisch zu sein. Und ich bin anderer Meinung, implizite Typisierung des Arrays bedeutet, dass das Ändern der Konstanten in Gleitkomma automatisch den richtigen Array-Typ erhält.
NetMage
12

Blorgbeard ist korrekt, aber Sie könnten auch darüber nachdenken, die neue Klasse für .NET 4.0 Tuple zu verwenden. Ich fand es einfacher, damit zu arbeiten, wenn Sie eine festgelegte Anzahl von Artikeln zurückgeben müssen. Wie wenn Sie immer 3 Elemente in Ihrem Array zurückgeben müssen, macht ein 3-int-Tupel deutlich, was es ist.

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

oder einfach

return Tuple.Create(0,0,0);
jb.
quelle
2
Wenn Sie eine variable Anzahl von Elementen haben, aber zusätzliche Funktionen wünschen, können Sie auch return new List<int>(new int[]{0,0,0});
Dave
1
@ Dave wäre nicht List<int>(Enumerable.Repeat(0, 3))besser?
NetMage
@NetMage Es wäre sicherlich besser, wenn Sie die Anzahl der Elemente variieren möchten.
Dave
9

Wenn das Array eine feste Größe hat und Sie eine neue mit Nullen gefüllte zurückgeben möchten

return new int[3];
anouar.bagari
quelle