Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_otvety.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.9 Mб
Скачать
  1. Классификация типов данных.

В языке программирования C# типы данных подразделяются на три категории:

  • Значение

  • Ссылка

  • Указатель

К первой категории относятся участки памяти, распределенные под переменные и предназначенные для хранения значений этих переменных. Например, следующий код

int x = 5;

объявляет переменную - целую со знаком, размером 32 бита, с именем x и начальным значением, равным 5. Ниже приведена соответствующая этому объявлению диаграмма:

Обратите внимание на то, как число 5 размещено на диаграмме.

Переменные-ссылки содержат адреса объектов, размещенных в динамической памяти. Следующий код объявляет переменную с именем y, типа object и инициализирует ее с помощью оператора new. Таким образом она получает адрес экземпляра object, размещенного в динамической памяти (object -- это базовый класс для всех типов в C#, но об этом чуть ниже).

object y = new object();

И наконец -- переменные-указатели. Они похожи на указатели в языках программирования C и C++. Очень важно понимать, что и переменные-ссылки и переменные-указатели, фактически, представляют собой адрес в памяти, но на этом их сходство заканчивается. Переменные-ссылки отслеживаются сборщиком "мусора", указатели -- нет. Переменные-указатели допускают выполнение арифметических операций над ними, ссылки -- нет. Бесконтрольное использование указателей в программе в принципе небезопасно, поэтому в языке C# допускается работать с  только внутуказателямири unsafe (небезопасных) блоков (небезопасный код должен помечаться зарезервированным словом unsafe, например:

static unsafe void FastCopy ( byte[] src, byte[] dst, int count )

{

// здесь допустимо использовать указатели

}

int[] mas1 = new int[5];

int[] mas1 = {5, 3, 5, 7, 15};

int[,] mas1 = new int[3, 5];

int[][] mas1 = new int[5][];

for (int x = 0; x < 5; x++)

{

mas1[x] = new int[x+1];

}

for (int x = 0; x < 5; x++)

for (int y = 0; y < x+1; y++)

mas1[x][y] = x + y;

for (int x=0; x < 5; x++)

{

for (int y=0; y < x+1; y++)

{

Console.Write(mas1[x][y]+"\\t" );

}

Console.WriteLine();

}

Console.Read();

Хотелось бы напоследок еще раз обратить ваше внимание на то, что массив в C# - это объект, поэтому с ним можно выполнять те же действия, что и с другими объектами. У массивов есть множество полезных методов, которые нужно знать и уметь ими пользоваться. Перечислю лишь наиболее употребляемые: Sort() - сортировка одномерного массива. Пример:

int[] mas2 = { 3, 4, 1 };

Array.Sort(mas2);

Clear() - очищает массив. Всем элементам присваивается значение по умолчанию. Пример:

int[] mas2 = { 3, 4, 1 };

Array.Сlear(mas2);

СopyTo() - копирование массива. В примере ниже мы создаем 2 массива. Длина первого 3, второго - 4. Первый массив мы заполняем при создании. Второй массив заполняется значениями по умолчанию, т.е. нулями. После чего мы копируем первый массив во второй, начиная с индекса 1, т.е. со второй ячейки:

int[] oldmass = { 3, 4, 1 };

int[] newmass = new int[4];

oldmass.CopyTo(newmass, 1);

Length - свойство массива содержащего его длину. Пример:

int[] mas = { 3, 4, 1 };

Console.WriteLine(mas.Length);

У массивов есть и другие методы и свойства, с ними вы можете ознакомиться сами. Приведенных здесь методов вполне хватит, для работы с несложными структурами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]