- •Операции преобразования типов
- •Ввод данных
- •3. Отрицание:
- •9. Условная операция.
- •Одномерные массивы
- •Многомерные массивы
- •Неизменяемые строки string
- •Ступенчатые массивы
- •Символы и строки
- •Символы char
- •Изменяемые строки
- •Перегрузка методов
- •Работа с каталогами Абстрактный класс FileSystemInfo
- •Класс DirectoryInfo
- •Класс Directory
- •Работа с файлами Класс Filelnfo
- •Класс File
- •Оператор try
- •Операторы checked и unchecked
- •Генерация собственных исключений
- •Байтовый поток
- •Символьный поток
- •Двоичные потоки
- •Данные: поля и константы
- •Наследование
- •Наследование конструкторов
- •1) Позволяет вызвать конструктор базового класса:
- •2) Позволяет получить доступ к члену базового класса, который скрыт "за" членом производного класса.
- •Конструкторы
- •Конструкторы экземпляра
- •Конструкторы класса
- •Унарные операции
- •Бинарные операции
- •Виртуальные методы
Ступенчатые массивы
В ступенчатых массивах количество элементов в разных строках может быть различным. В памяти ступенчатый массив хранится в виде массива массивов. Структура ступенчатого массива:
|
Массив |
|
|
|
|
a[0][0] |
a[0][1] |
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
a[1][0] |
a[1][1] |
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a[n][0] |
a[n][1] |
… |
|
|
|
Объявление ступенчатого массива:
тип [][] имя_массива;
Например:
int [][]a;
Фактически мы объявили одномерный массив ссылок на целочисленные одномерные массивы. При таком описании потребуется не только выделять память под одномерный массив ссылок, но и под каждый из целочисленных одномерных массивов. Такое распределение памяти позволяет определять произвольную длину каждой строки массива (отсюда и произошло название массива – ступенчатый). Например:
int [][] a= new int [3][]; // Создаем три строки
a[0]=new int [2]; // 0-ая строка ссылается на 2-х элементый одномерный массив
a[1]=new int [3]; // 1-ая строка ссылается на 3-х элементый одномерный массив
a[2]=new int [10]; // 2-ая строка ссылается на 10-х элементый одномерный массив
Другой способ выделения памяти:
int [][] a= {new int [2], new int [3], new int [10]};
Так как каждая строка ступенчатого массива фактически является одномерным массивом, то с каждой строкой можно работать как с экземпляром класса Array. Это является преимуществом ступенчатых массивов перед двумерными массивами.
Билет №12. Символьный тип char, неизменяемы строки string и изменяемые строки StringBuider.
Символы и строки
Обработка текстовой информации является одной из самых распространенных задач современного программировании. С# предоставляет для ее решения широкий набор средств: символы char, неизменяемые строки string, изменяемые строки StringBuider и регулярные выражения Regex.
Символы char
Символьный тип char предназначен для хранения символа в кодировке Unicode. Символьный тип относится к встроенным типам данных С# и соответствует стандартному классу Сhar библиотеки .Net из пространства имен System
Неизменяемые строки string
Тип string, предназначенный для работы со стоками символов в кодировке Unicode, является встроенным типом С#. Ему соответствует базовый тип класса System.String библиотеки .Net. Каждый объект string - это неизменяемая последовательность символов Unicode, т.е. методы, предназначенные для изменения строк, возвращают измененные копии, исходные же строки остаются неизменными.
Создать строку можно несколькими способами:
string s; // инициализация отложена
string s=''кол около колокола''; //инициализация строковым литералом
string s=@''Привет! //символ @ сообщает конструктору string, что строку
Сегодня хорошая погода!!! '' // нужно воспринимать буквально, даже если она занимает
/
string s=new string (' ', 20); //конструктор создает строку из 20 пробелов
int x = 12344556; //инициализировали целочисленную переменную
string s = x.ToString(); //преобразовали ее к типу string
char [] a={'a', 'b', 'c', 'd', 'e'}; //создали массив символов
string v=new string (a); // создание строки из массива символов
char [] a={'a', 'b', 'c', 'd', 'e'}; //создание строки из части массива символов, при этом: 0
string v=new string (a, 0, 2) // показывает с какого символа, 2 – сколько символов
При работе с объектами класса string нужно учитывать их свойство неизменяемости, т.е. тот факт, что методы изменяют не сами строки, а их копии.
Боротся с таким засорением придется сборщику мусора, что будет сказываться на производительности программы. Поэтому если нужно изменять строку, то лучше пользоваться классом StringBuilder.

a
a[0]
a[1]
a[n]