
- •Введение в массивы и строки
- •1. Понятие массива
- •2. Объявление массива и его инициализация
- •3. Операции
- •4. Понятие строки
- •5. Объявление и инициализация строк
- •6. Операции со строками
- •7. Форматирование строки
- •Массивы и строки
- •1. Одномерные массивы
- •2. Динамические массивы
- •3. Строки
- •4. Динамические строки
- •5.Двумерные массивы
- •6. Массив массивов
Введение в массивы и строки
1. Понятие массива
В общем случае массив представляет собой набор элементов одного типа, расположенных в непрерывной области памяти.
Массив имеет тип, каждый элемент имеет уникальный номер. Доступ к элементу массива выполняется путем указания порядкового номера и имени массива.
В языке С# массив определен как класс с именем Array. Следовательно, массив относится к ссылочным типам данных. Различают:
Одномерный массив
Многомерный массив
Массив массивов
2. Объявление массива и его инициализация
Тип элементов[] ИмяМассива;
ИмяМассива = new Тип элементов[кол-во элементов];
int[] a;
a=new int[3];
При выделении памяти значения элементов могут быть определены явным образом, при этом количество элементов указывать не обязательно.
int[] a;
a=new int[]{10, 20, 300};

3. Операции
Операции с элементами – любые операции, определенные для того типа, к которому относятся элементы массива.

a[2]=a[0]+a[1]
Операции с массивом:
присваивание (копируется значение ссылки)
отношение (сравниваются значения ссылок)
int[]
a, b, c;
bool f1, f2;
a=new int[]{10, 20};
b=new int[]{10, 20};
f1= a==b; //false 100≠200
…
c=a;
f2= c==a; //true 100=100
b=a;
Область памяти, на которую потеряна ссылка (в данном случае область памяти по адресу 200), ставится в очередь на освобождение. Эта память будет автоматически освобождена программой MSDN «Сборщик мусора».
4. Понятие строки
Строка предназначена для хранения текста в виде множества символов (кодировка Unicode: 1 символ – 2 байта).
Отличия от массива
Хотя строка структурно подобна массиву, но формально строка не является массивом и имеет собственный тип данных string (String – синоним в MSDN) со своим набором свойств и методов.
Тип строка объявлен как класс, т.е. строка – это ссылочный тип. Тип строка относится к стандартным типам данных, т.е. все свойства заранее определены.
Операции с объектами типа строка содержательно выполняются не так, как операции с массивами.
5. Объявление и инициализация строк
string ИмяСтроки;
Размер строки указывать не требуется, он будет автоматически определен при инициализации или присавивании.
string
s=”ГУ-ВШЭ”;
6. Операции со строками
Операции над элементами строки – это все операции, определенные для типа char. Исключение: над элементом строки запрещена операция присваивания, т.е. значение элемента строки изменить непосредственно невозможно.
int Код; string s=”ABBA”;
Код=s[0]; // Код => код символа ‘A’=65
s[0]=’Z’;
// ошибка!
Альтернативой непосредственному изменению элемента строки является формирование новой строки с нужным значением элемента.
Операции над строками
Присваивание:
В отличие от массива копируется не ссылка, а значение строки.
string
s1=”ВАСЯ”,
s2;
s2=s1;
Отношения:
Операции равно(==) и неравно(!=) равносильны сравнению значений строк.
s2==s1; //true ВАСЯ=ВАСЯ
В этом заключается отличие строки от массива - для массивов сравниваются ссылки.
Операции больше(>), больше или равно(>=), меньше(<), меньше или равно(<=) равносильны сравнению ссылок.
s2>=s1; //false 100>=200
При выполнении указанных операций отличий между массивом и строкой нет – в обоих случаях сравниваются ссылки.
Для того, чтобы сравнить строки на предмет больше/меньше по значению необходимо использовать метод CompareTo.
Сцепление строк:
строка1+строка2=>новая строка - объединение исходных
В операции сцепления могут использоваться помимо строки операнды других типов. При этом старшим считается тип строки.
int a=10, b=20;
string s1, s2, s3;
s1=”Итого:”+a; // Итого:10
s2=” Итого:”+a+b; // Итого:1020
s3=a+b+”= Итого”; //30= Итого