Dipende da cosa intendi per "matrice".
Se si intende il concetto di calcolo generale di una raccolta di oggetti a accesso fisso, a lunghezza fissa, indicizzabile in numero intero, allora sì, una stringa può essere considerata esattamente come quella. (Il concetto di calcolo generale spesso include l'essere contigui in memoria, ma salvo alcuni casi, come l'uso di puntatori in codice non sicuro, ciò non è molto significativo in termini di C#).
Se si intende l'implementazione C# definita in linguaggio di questo concetto, char[]
quindi non proprio, i due sono cose diverse.
In pratica, System.String
è effettivamente implementato come una serie di char
s, ma non deve essere stato.
lingua nit-picks a parte, il bit pratico:
Se si vuole fare le stesse operazioni su una stringa come si farebbe su un char[]
allora questo funzionerà spesso (in particolare se, string è di sola lettura) e molto spesso è il modo più efficace per farlo, purché concettualmente piuttosto semplice. In particolare, l'utilizzo di foreach
e l'utilizzo di un indice che si sposta tra 0
e str.Length - 1
funzionano bene. Allo stesso modo, molte operazioni che è possibile eseguire su char[]
possono essere eseguite su string
, ad esempio CopyTo()
e trasmesse a IEnumerable<char>
.
Se si desidera effettivamente disporre di una matrice di caratteri, è necessario chiamare ToCharArray()
.
fonte
2010-09-24 14:36:36
+1 per una risposta chiara e documentata. – NotMe