NSMutableArray
和NSArray
的C#equivelant是什么?
C#是否具有可变且不可变的?我注意到默认情况下string
似乎是可变的。显然我对C#来说是全新的。
如果你能告诉我如何在C#中快速填充数组,那将是一个奖励。感谢。
答案 0 :(得分:15)
如果您考虑ArrayList
和object[]
的弱类型性质,那将分别为NSMutableArray
和NSArray
。
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
是不可变的,就像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"};