2011-12-11 68 views
13

什麼是NSMutableArrayNSArray的C#equivelant?什麼是NSMutableArray和NSArray的C#equivelant?

C#有一個可變的和不可變的嗎?我注意到string默認情況下似乎是可變的。很明顯,我對C#完全陌生。

如果你能告訴我如何在C#中快速填充數組,那將是一種獎勵。謝謝。

回答

14

這將是ArrayListobject[]分別,如果你採取的NSMutableArrayNSArray的弱類型性質考慮在內。

C#中的數組和列表(至少對於.NET 2.0及以上版本)也可以是強類型的,所以根據您存儲的對象類型,您可以指定該類型。例如,如果在Objective-C代碼中只有NSString對象位於NSMutableArray中,那麼您將使用List<string>,如果您在NSArray中包含它們,則會使用固定大小的string[]

要快速初始化和填充列表或在C#中的數組,你可以使用什麼作爲一個collection initializer

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

string在C#中是不可變的,就像在Foundation框架NSString。每次將新字符串分配給一個變量時,只需將該變量指向或引用至不同的對象即可。

+0

沒有意識到有關字符串。謝謝 –

+0

快速提問...我如何製作一個弱列表?你的例子顯示了一個強類型的列表。 –

+0

你不需要再使用弱類型的集合,但是如果你需要的話,你可以使用非泛型的'ArrayList'。 – BoltClock

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

C#中的字符串是不可變的。 C#中NSMutableString的等價物是StringBuilder。 C#與Objective-C不同,並不能清楚地表示方法名稱上的方法意圖。 例如,String和StringBuilder類都有一個名爲Replace的方法,您可能會想到替換字符。 String.Replace替換並返回新字符串,而 StringBuilder.Replace進行就地替換。

C#(以及Java)中大多數類中的大多數方法都是這樣工作的。

在的OBJ-C,命名約定是明確的,它要麼

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

也很高興知道。謝謝! –