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?


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[] {};

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];

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>();

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


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)


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];

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)


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();

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[] {""};

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.