Динамические массивы
Размер обычного массива фиксируется при его создании и в процессе выполнения программы напрямую его изменить невозможно. На практике встречаются задачи, когда количество элементов в массиве должно меняться в процессе выполнения программы.
Альтернативой массиву в этом случае является динамический массив. Динамический массив определен как класс ArrayList в пространстве имен System.Collections.
Принципиальное отличие от обычного массива: размер динамического массива автоматически изменяется при добавлении и удалении элементов, которые выполняются специальными методами.
Поле объекта: Count – количество элементов в массиве
Методы объекта для добавления элементов в массив:
Add (значение) // добавление элемента в конец массива
AddRange (массив) // добавление массива в конец массива
Insert (номер позиции, значение) //добавление элемента в заданную позицию
InsertRange (номер позиции, массив) // добавление массива с заданной позиции
Методы объекта для удаления элементов из массива:
Remove (значение)
RemoveAt (номер позиции)
RemoveRange (номер позиции, количествово элементов)
Clear ()// удаление всех элементов
Пример:
ArrayList_a;
int[] b,c;
b=new int[]{10, 20};
c=new int[100];
a=new ArrayList(); a Count
пусто 0
a.Add(5); 5 1
a.Insert(0,77); // в позицию 0 значение 77 77 5 2
a.AddRange(b); 77 5 10 20 4
a.CopyTo(1,c,0,3); 4
a.InsertRange(0,b); 10 20 77 5 10 20 6
a.Remove(20); 10 77 5 10 20 5
a.RemoveAt(3); 10 77 5 20 4
a.RemoveRange(1,2); 10 20 2
a.Clear(); пусто 0
Если действие выполнить невозможно, действие не выполняется. Если выполняемое действие приводит к выходу за границы массива, фиксируется исключительная ситуация.
Выбор, каким массивом пользоваться, зависит от ситуации. Обычный массив структурно проще, доступ к элементу быстрее, методов больше.
У динамического массива можно без проблем удалять/добавлять элементы, легко изменять размер.
На практике используется сочетание динамического и обычного массивов. Это порождает проблему создания динамического массива на основе обычного и наоборот.
динамический массив(a) → обычный массив(b)
a.CopyTo (позиция в дин.мас-ве ,обычный массив, позиция в об.мас-ве, кол-во элементов)
обычный массив(b) → динамический массив(a)
a.AddRange (b) //добавление обычного массива в пустой динамический
Строки
Понятие строки и операции со строками были рассмотрены ранее. Остановимся на дополнительных возможностях, которые предоставляются методами класса string.
Поле объекта: Length
Методы объекта:
сравнение строк на предмет больше-меньше
ИмяСтроки.CompareTo (строка, с которой сравниваем)
Сравнение выполняется лексикографичекси (по алфавиту), метод возвращает целое число:
-1, если строка < той, с которой сравниваем
0, если строка = той, с которой сравниваем
+1, если строка > той, с которой сравниваем
поиск подстроки
позиция key в вызываемой строке, начиная с заданной позиции
IndexOf – первое вхождение key
LastIndexOf – последнее вхождение key
Возвращает -1, если key отсутствует
Замена в вызывающей строке всех подстрок s1 на новую подстроку s2.
Вставка в вызывающую строку строки s1 с заданной позиции.
Удаление в строке заданного количества символов, начиная с заданной позиции.
Разбиение вызывающей строки на слова. Возможные разделители между словами указываются в массиве символов.
Если несколько разделителей идут подряд, первый из них считается разделителем, а на месте остальных формируется пустая строка.
Формирование строки путем соединения строк, указанных в массиве. Слова в объединенной строке разделяются строкой-разделителем.
Метод Join - статический
string s1=”око , за”;
string[] word;
char[] sep; // массив разделителей
sep = new char[]{‘ ’, ‘,’};
s1=s1.Insert(8, “_око”);
s1=s1.Replace(“око”, “зуб”);
word=s1.Split(sep);
s1=string.Join (“>”, word);
Дата добавления: 2019-02-08; просмотров: 588;