什么是NSMutableArray和NSArray的C#等价物?

时间:2011-12-11 03:44:15

标签: c# .net objective-c visual-studio cocoa

NSMutableArrayNSArray的C#equivelant是什么?

C#是否具有可变且不可变的?我注意到默认情况下string似乎是可变的。显然我对C#来说是全新的。

如果你能告诉我如何在C#中快速填充数组,那将是一个奖励。感谢。

3 个答案:

答案 0 :(得分:15)

如果您考虑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

C#中的

string是不可变的,就像Foundation框架中的NSString一样。每次为变量分配新字符串时,只需将变量指向或引用另一个对象即可。

答案 1 :(得分:4)

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

C#中的字符串是不可变的。 C#中NSMutableString的等价物是StringBuilder。 与Objective-C不同,C#并不代表方法名称上的方法意图。 例如,String和StringBuilder类都有一个名为Replace的方法,您可以认为它替换了字符。 String.Replace替换并返回新字符串 StringBuilder.Replace执行就地替换。

C#(和Java)中的大多数类中的大多数方法都是这样的。

在Obj-C中,命名约定很明确,它是

[NSString stringByReplacing...]
[NSMutableString replace...]

答案 2 :(得分:-1)

对于C#中的Xamarin.iOS:

string[] pickerItemsArray;

pickerItemsArray = new string[]{"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};