2011-12-11 14 views
13

Che cos'è l'equivoco C# di NSMutableArray e NSArray?Qual è l'identificatore C# di NSMutableArray e NSArray?

C# ha un mutabile e non mutabile? Ho notato che string sembra essere modificabile per impostazione predefinita. Ovviamente sono completamente nuovo in C#.

Se potessi dirmi come popolare rapidamente la matrice in C#, sarebbe un vantaggio. Grazie.

risposta

14

Quello sarebbe ArrayList e object[], rispettivamente, se si prende la debole natura tipizzazione di NSMutableArray e NSArray in considerazione.

Gli array e gli elenchi in C# (almeno per .NET 2.0 e versioni successive) possono anche essere fortemente tipizzati, quindi a seconda del tipo di oggetto che si sta memorizzando è possibile specificare quel tipo. Ad esempio se hai solo oggetti NSString in un NSMutableArray nel tuo codice Objective-C, dovresti usare List<string>, e se li hai in uno NSArray, dovresti usare invece string[] con una dimensione fissa.

Per inizializzare velocemente e compilare un elenco o una matrice in C#, è possibile utilizzare ciò che è noto come un collection initializer:

List<string> list = new List<string> { "foo", "bar", "baz" }; 
string[] array = { "foo", "bar", "baz" }; // Shortcut syntax for arrays 

string in C# è immutabile, proprio come NSString nel quadro della Fondazione. Ogni volta che assegni una nuova stringa a una variabile, devi semplicemente puntare o riferire la variabile a un oggetto diverso.

+0

non si rese conto che circa stringhe. Grazie –

+0

Domanda veloce ... come posso creare una lista debole? Il tuo esempio mostra una lista fortemente tipizzata. –

+0

Non avresti bisogno di usare più collezioni debolmente tipizzate, ma se hai bisogno puoi usare un 'ArrayList' non generico. – BoltClock

4
List<String> stringList = new List<String>(); 
stringList.Add("Test"); 

La stringa in C# è immutabile. L'equivalente di NSMutableString in C# è StringBuilder. C#, a differenza di Objective-C non rappresenta chiaramente l'intenzione del metodo sul nome del metodo. Ad esempio, entrambe le classi String e StringBuilder hanno un metodo chiamato Sostituisci che si potrebbe pensare, sostituisce i caratteri. String.Replace sostituisce e restituisce la nuova stringa mentre StringBuilder.Replace sostituisce sul posto.

La maggior parte dei metodi nella maggior parte delle classi in C# (e anche in Java) funzionano in questo modo.

In Obj-C, le convenzioni di denominazione sono chiari, è sia

[NSString stringByReplacing...] 
[NSMutableString replace...] 
+0

Buono a sapersi. Grazie! –

Problemi correlati