Saya telah bekerja di Java dan baru mengenal teknologi .Net
Apakah mungkin untuk mendeklarasikan fungsi di C # yang menerima parameter input variabel
Apakah ada sintaks C # yang mirip dengan sintaks Java berikut?
void f1(String... a)
Saya telah bekerja di Java dan baru mengenal teknologi .Net
Apakah mungkin untuk mendeklarasikan fungsi di C # yang menerima parameter input variabel
Apakah ada sintaks C # yang mirip dengan sintaks Java berikut?
void f1(String... a)
Jawaban:
Ya, C # memiliki parameter yang setara dengan varargs. Mereka disebut array parameter , dan diperkenalkan dengan paramspengubah:
public void Foo(int x, params string[] values)
Kemudian sebut dengan:
Foo(10, "hello", "there");
Seperti halnya Java, hanya parameter terakhir yang dapat bervariasi seperti ini. Perhatikan bahwa (seperti pada Java) parameter dari params object[] objectsdapat dengan mudah menyebabkan kebingungan, karena Anda perlu mengingat apakah satu argumen bertipe object[]dimaksudkan untuk digabungkan lagi atau tidak. Demikian juga untuk tipe nullable apa pun, Anda perlu mengingat apakah satu argumen nullakan diperlakukan sebagai referensi array atau elemen array tunggal. (Saya pikir kompiler hanya membuat array jika perlu, tetapi saya cenderung menulis kode yang menghindari saya harus mengingatnya.)
Lihat params (Referensi C #)
Kata kunci params memungkinkan Anda menentukan parameter metode yang menggunakan sejumlah variabel argumen.
Anda bisa mengirim daftar argumen yang dipisahkan koma dari tipe yang ditentukan dalam deklarasi parameter, atau larik argumen dari tipe yang ditentukan. Anda juga tidak dapat mengirim argumen.
Tidak ada parameter tambahan yang diizinkan setelah kata kunci params dalam deklarasi metode, dan hanya satu kata kunci params yang diizinkan dalam deklarasi metode.
Seperti yang ditunjukkan pada contoh, metode ini dideklarasikan sebagai
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
dan digunakan sebagai
UseParams(1, 2, 3, 4);