C # dichiara array di stringhe vuoto


152

Devo dichiarare un array di stringhe vuoto e sto usando questo codice

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

Ma ricevo l'errore "nome metodo previsto".

Cosa c'è che non va?


2
Perché hai bisogno di un array vuoto? Cosa stai cercando di fare?
— Sig. T.

7
@MrT. non pertinente alla domanda.
— James,

1
@James - forse c'è un modo più elegante di fare qualunque cosa stia cercando di fare.
— Sig. T.

4
@aquanat - anche se una risposta è già stata accettata e non conosco il tuo codice o la logica dietro di esso, ti consiglierei umilmente di non restituire un array vuoto ma null e controllare dalla funzione chiamante se il valore restituito è null o non. Penso che sarebbe molto più elegante, leggibile ed efficiente.
— Sig. T.

2
Il motivo per cui non si desidera restituire null è che l'utente del metodo deve verificare null. Ad esempio, il consumatore del metodo potrebbe inserire il valore restituito in un foreach e se viene restituito un array vuoto, non vi sono problemi. Tuttavia, se viene restituito null, è necessario che sia presente un controllo per null prima di ripetere il valore restituito
— JAB

Risposte:


265

Prova questo

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

1
Grazie a tutti ... non chiedetemi perché, ma l'unico modo era: string [] arr = new String [0] as string [];
— aquanat,

2
Il metodo di Atish ha funzionato ed eliminato il lamento di Visual Studio per l'utilizzo di una variabile che non è inizializzata se la assegnerò in un'istruzione if
— Joe,

1
Un'altra opzione èc# Array.Empty<string>()
— Jannick Breunis,

68

La tua sintassi è sbagliata:

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

o

string[] arr = new string[0];

1
Perché la stringa è sia in maiuscolo che in maiuscolo negli esempi?
— It'sNotALie.

1
@newStackExchangeInstance, appena copiato il codice "così com'è" dalla domanda. Entrambe le righe vengono compilate correttamente, anche se concordo sul fatto che seguire uno stile sia meglio.
— Andrei,

15

Se stai usando .net 4.6, hanno una nuova sintassi che puoi usare:

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

var myArray = Array.Empty<string>();

Bel trucco! E funziona anche con IList <T>: IList <string> x = Array.Empty <string> ();
— ZunTzu,


8

I costruttori di array sono diversi. Ecco alcuni modi per creare un array di stringhe vuoto:

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

(scusa, sul cellulare)


1

Quelle cose ricci a volte sono difficili da ricordare, ecco perché c'è un'ottima documentazione :

// Declare a single-dimensional array  
int[] array1 = new int[5];

Non è necessario modificare questa risposta, poiché le risposte servono allo scopo gererale e non alla domanda specifica per dire. Risponde "Qual è la sintassi per dichiarare e inizializzare un array" ed è una citazione dal link che ho pubblicato. OP può sostituire intcon stringse gli piace.
— CodeCaster

1

La tua sintassi non è valida.

string[] arr = new string[5];

Ciò creerà arrun array di stringhe referenziato, in cui si trovano tutti gli elementi di questo array null. (Poiché le stringhe sono tipi di riferimento )

Questa matrice contiene gli elementi da arr[0]a arr[4]. L' newoperatore viene utilizzato per creare l'array e inizializzare gli elementi dell'array ai loro valori predefiniti. In questo esempio, tutti gli elementi dell'array sono inizializzati su null.

Single-Dimensional Arrays (C# Programming Guide)


Grazie a tutti ... non chiedetemi perché, ma l'unico modo era: string [] arr = new String [0] as string [];
— aquanat,

0

Se è necessario creare un array vuoto, è possibile farlo:

string[] arr = new string[0];

Se non si conosce la dimensione, è possibile utilizzare List<string>anche come

var valStrings = new List<string>();

// do stuff...

string[] arrStrings = valStrings.ToArray();

Sono così dispiaciuto. Ho rovinato accidentalmente il tuo post con modifiche sbagliate.
— Soner Gönül,

-3

Quanto segue dovrebbe funzionare bene.

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

5
Non è un array vuoto, poiché contiene un elemento che è una stringa vuota. arr.Length () restituirà 1.
— Guillermo Prandi

Questo potrebbe non essere un array vuoto ma trovo questa risposta nulla di sicura. Grazie! 1 su!
— hubert17,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.