Cara mengembalikan literal array di C #

89

Saya mencoba kode berikut. Garis dengan kesalahan ditunjukkan.

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

Bagaimana saya bisa mengembalikan literal array seperti string literal?

sgarg
sumber
4
Juga tidak ada gunanya bahwa C # sebenarnya tidak memiliki literal array, tetapi sintaks inisialisasi array - yang dirujuk oleh jawaban yang diterima. Literal adalah khusus karena dapat diserialkan secara langsung, dan dapat ditetapkan ke constbidang. Ini tidak terjadi dengan sintaks inisialisasi array.
cwharris

Jawaban:

167

Kembalikan larik intseperti ini:

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

Anda juga dapat secara implisit mengetikkan array - kompilator akan menyimpulkan bahwa itu seharusnya int[]karena array tersebut hanya berisi intnilai:

return new [] { 0, 0, 0 };
Blorgbeard keluar
sumber
6
Woah ho, saya tidak tahu Anda bisa mengetik array secara implisit! +1
Chris Sinclair
1
Saya menemukan itu new int [] {0,0,0}juga berhasil. Akan lebih jelas menurut saya.
sgarg
3
@sgarg Itu sepertinya identik dengan jawabannya. Dan saya tidak setuju, pengetikan implisit dari array berarti mengubah konstanta menjadi floating point secara otomatis akan mendapatkan tipe array yang benar.
NetMage
13

Blorgbeard benar, tetapi Anda mungkin juga berpikir untuk menggunakan yang baru untuk kelas Tuple .NET 4.0. Saya merasa lebih mudah untuk bekerja jika Anda memiliki sejumlah item untuk dikembalikan. Seperti jika Anda selalu perlu mengembalikan 3 item dalam array Anda, tupel 3-int memperjelas apa itu.

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

atau sederhananya

return Tuple.Create(0,0,0);
jb.
sumber
2
Jika Anda memiliki jumlah item yang bervariasi tetapi menginginkan fungsionalitas tambahan, Anda juga dapat melakukannya:return new List<int>(new int[]{0,0,0});
Dave
1
@ Dave tidak List<int>(Enumerable.Repeat(0, 3))akan lebih baik?
NetMage
@NetMage Akan lebih baik jika Anda ingin memvariasikan jumlah item, tentunya.
Dave
10

jika array memiliki ukuran tetap dan Anda ingin mengembalikan yang baru dengan angka nol

return new int[3];
anouar.bagari
sumber