C # mendeklarasikan array string kosong

152

Saya perlu mendeklarasikan array string kosong dan saya menggunakan kode ini

string[] arr = new String[0]();

Tapi saya mendapatkan kesalahan "nama metode yang diharapkan".

Apa yang salah?

aquanat
sumber
2
Mengapa Anda membutuhkan array kosong? Apa yang sedang Anda coba lakukan?
Tn.
7
@ MR. tidak benar-benar relevan dengan pertanyaan itu.
James
1
@ James - mungkin ada cara yang lebih elegan untuk melakukan apa pun yang dia coba lakukan.
Tn.
4
@ aquanat - walaupun jawaban telah diterima dan saya tidak tahu kode atau logika di baliknya, saya akan dengan rendah hati menyarankan Anda untuk tidak mengembalikan array kosong tetapi null dan periksa dari fungsi panggilan jika nilai yang dikembalikan adalah nol atau tidak. Saya pikir itu akan jauh lebih elegan, mudah dibaca dan efisien.
Tn.
2
Alasan Anda tidak ingin mengembalikan nol adalah karena konsumen metode ini harus memeriksa nol. Sebagai contoh, konsumen metode dapat menempatkan nilai yang dikembalikan dalam foreach dan jika array kosong dikembalikan, tidak ada masalah. Namun, jika null dikembalikan, harus ada cek untuk null sebelum mengulangi nilai yang dikembalikan
JAB

Jawaban:

265

Coba ini

string[] arr = new string[] {};
Atish Dipongkor - MVP
sumber
1
Terima kasih semuanya ... jangan tanya kenapa, tapi satu-satunya cara adalah: string [] arr = new String [0] as string [];
aquanat
2
Metode Atish bekerja dan menghilangkan keluhan studio visual tentang penggunaan variabel yang tidak diinisialisasi jika saya tetapkan dalam pernyataan if
Joe
1
Pilihan lainnya adalahc# Array.Empty<string>()
Jannick Breunis
68

Sintaks Anda salah:

string[] arr = new string[]{};

atau

string[] arr = new string[0];
Andrei
sumber
1
Mengapa string dikapitalisasi dan tidak dikapitalisasi dalam contoh Anda?
Notalie.
1
@newStackExchangeInstance, cukup salin kode "apa adanya" dari pertanyaan. Kedua baris mengkompilasi dengan baik, meskipun saya setuju bahwa mengikuti satu gaya lebih baik.
Andrei
15

Jika Anda menggunakan .net 4.6, mereka memiliki beberapa sintaks baru yang dapat Anda gunakan:

using System;  // To pick up definition of the Array class.

var myArray = Array.Empty<string>();
Brian
sumber
Trik yang bagus! Dan itu juga berfungsi dengan IList <T>: IList <string> x = Array.Empty <string> ();
ZunTzu
9

Anda bisa mencoba ini

string[] arr = {};
Bharadwaj
sumber
8

Konstruktor array berbeda. Berikut ini beberapa cara untuk membuat array string kosong:

var arr = new string[0];
var arr = new string[]{};
var arr = Enumerable.Empty<string>().ToArray()

(maaf, di ponsel)

Itu adalah Notalie.
sumber
1

Hal-hal keriting kadang-kadang sulit diingat, itu sebabnya ada dokumentasi yang sangat baik :

// Declare a single-dimensional array  
int[] array1 = new int[5];
CodeCaster
sumber
Tidak perlu mengedit jawaban ini, karena jawaban melayani tujuan gereral, dan bukan pertanyaan spesifik per katakan. Itu menjawab "Apa sintaks untuk menyatakan dan menginisialisasi array" dan merupakan kutipan dari tautan yang saya posting. OP dapat menggantikan intdengan stringjika dia suka.
CodeCaster
1

Sintaks Anda tidak valid.

string[] arr = new string[5];

Itu akan membuat arr, array string yang dirujuk, di mana semua elemen array ini berada null. (Karena string adalah tipe referensi )

Array ini berisi elemen dari arr[0]hingga arr[4]. The newoperator yang digunakan untuk membuat array dan menginisialisasi elemen array ke nilai standar. Dalam contoh ini, semua elemen array diinisialisasi ke null.

Single-Dimensional Arrays (C# Programming Guide)

Soner Gönül
sumber
Terima kasih semuanya ... jangan tanya kenapa, tapi satu-satunya cara adalah: string [] arr = new String [0] as string [];
aquanat
0

Jika Anda harus membuat array kosong, Anda dapat melakukan ini:

string[] arr = new string[0];

Jika Anda tidak tahu tentang ukuran maka Anda juga dapat menggunakan List<string>juga seperti

var valStrings = new List<string>();

// do stuff...

string[] arrStrings = valStrings.ToArray();
Rahul
sumber
Saya minta maaf. Saya tidak sengaja merusak pos Anda dengan pengeditan yang salah.
Soner Gönül
-3

Berikut ini akan berfungsi dengan baik.

string[] arr = new string[] {""};
Karthikeyan Gunasheker
sumber
5
Itu bukan array kosong, karena mengandung satu elemen yang merupakan string kosong. arr.Length () akan mengembalikan 1.
Guillermo Prandi
Ini mungkin bukan array kosong tapi saya menemukan jawaban ini aman nol. Terima kasih! 1 naik!
hubert17