Что такое эквивалент С# NSMutableArray
и NSArray
?
Есть ли в С# изменчивый и не изменяемый файл? Я заметил, что string
кажется изменяемым по умолчанию.
В качестве бонуса, как быстро заполнить массив в С#?
Что такое эквивалент С# NSMutableArray
и NSArray
?
Есть ли в С# изменчивый и не изменяемый файл? Я заметил, что string
кажется изменяемым по умолчанию.
В качестве бонуса, как быстро заполнить массив в С#?
Это будет ArrayList
и object[]
соответственно, если вы учтете слабый характер типизации NSMutableArray
и NSArray
.
Массивы и списки в С# (по крайней мере для .NET 2.0 и выше) также могут быть строго типизированы, поэтому в зависимости от того, какой тип объекта вы храните, вы можете указать этот тип. Например, если у вас есть только NSString
объекты в NSMutableArray
в вашем коде Objective-C, вы должны использовать List<string>
, и если вы используете их в NSArray
, вы должны использовать string[]
с фиксированный размер.
Чтобы быстро инициализировать и заполнить список или массив в С#, вы можете использовать то, что известно как инициализатор коллекции:
List<string> list = new List<string> { "foo", "bar", "baz" };
string[] array = { "foo", "bar", "baz" }; // Shortcut syntax for arrays
string
в С# неизменен, как и NSString
в рамках Foundation. Каждый раз, когда вы назначаете новую строку переменной, вы просто указываете или ссылаетесь на переменную на другой объект.
List<String> stringList = new List<String>();
stringList.Add("Test");
Строка в С# неизменна. Эквивалентом NSMutableString в С# является StringBuilder. С#, в отличие от Objective-C, явно не представляет намерения метода в имени метода. Например, оба класса String и StringBuilder имеют метод Replace, который, как вы думаете, заменяет символы. String.Replace заменяет и возвращает новую строку, тогда как StringBuilder.Replace заменяет на месте.
Большинство методов в большинстве классов в С# (и Java тоже) работают так.
В Obj-C соглашения об именах понятны, это либо
[NSString stringByReplacing...]
[NSMutableString replace...]
Для Xamarin.iOS в С#:
string[] pickerItemsArray;
pickerItemsArray = new string[]{"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};