#c# #.net #object
#c# #.net #объект
Вопрос:
У меня есть
Object[] a = {"steve","jill"};
Как мне добавить еще один элемент?
a[2]="new york"; //doesn't work of course
не существует a.Add("new york");
или a.Push("new york");
Комментарии:
1. Вы не можете изменить размер массива после его создания. Если вам нужен динамический размер, используйте вместо этого список<object> .
2. Прочитайте это с классными примерами — dotnetperls.com/list
Ответ №1:
Если вы настаиваете на использовании массива в качестве коллекции, вам придется Resize
:
Array.Resize(ref a, a.Length 1);
a[a.Length - 1] = "new york";
Однако гораздо лучшим подходом является использование List<T>
, специально разработанного для этой цели:
List<object> a = new List<object>()
{ "steve", "jill" };
a.Add("new york");
Комментарии:
1. ПРИМЕЧАНИЕ: Внутри
List<T>
находится массив, размер которого при необходимости динамически изменяется. Вопрос в том, должен ли op использоватьList<object>
илиArrayList
2. @ja72:
ArrayList
является устаревшим , вот почемуList<Object>
предпочтительнее
Ответ №2:
Object[] a = { "steve", "jill" };
Object[] b = new Object[3];
a.CopyTo(b, 0);
a= b;
a[2] = "new york";
Комментарии:
1. Я согласен с использованием списка, но это код примерно 10-летней давности. И Intellisence не показывает мне, что у меня есть изменение размера.
2. пользователь5903880 на самом деле это лучший (наиболее эффективный) ответ, потому что
Array.Resize
делает что-то подобное, но с большими накладными расходами referencesource.microsoft.com/#mscorlib/system /…3. С тех пор, как мне приходилось делать что-либо подобное, было трудно вспомнить, что мне действительно нужно было сделать, это изменить размер массива.
Ответ №3:
Ленивая неэффективная версия:
Object[] a = {"steve","jill"};
a = a.Concat(new Object[]{"new york"}).ToArray(); // add
a = new Object[]{"new york"}.Concat(a).ToArray(); // insert