Содержание
- 2. Массив— набор элементов одного и того же типа, объединенных общим именем. С#-массивы относятся к ссылочным типам
- 3. Одномерные массивы Одномерный массив – это фиксированное количество элементов одного и того же типа, объединенных общим
- 4. Объявление одномерного массива
- 5. static void Main() { int[] myArray = { 0, 1, 2, 3, 4, 5, 6, 7,
- 6. Существующей ссылке на одномерный массив присваивается ссылка на новый массив int [ ] myArray = new
- 7. Массивы и исключения static void Main() { int[] myArray = { 0, 1, 2, 3, 4,
- 8. Массив как параметр Так как имя массива фактически является ссылкой, то он передается в метод по
- 9. class Program { static void Print(int n, int[] a) //n – размерность массива, а – ссылка
- 10. Массив как объект
- 11. Вызов статических методов происходит через обращение к имени класса Например: /*Обращение к статическому методу Sort класса
- 12. class Program { static void Main() { try { int[] MyArray; Console.Write("Введите размерность массива: "); int
- 13. Многомерные массивы тип [,] имя__массива; тип [,] имя__массива = new тип [размер1, размер2]; тип [,] имя__массива={{элементы
- 14. class Program { static void PrintArray(string a, int[,] mas) { Console.WriteLine(a); for (int i = 0;
- 15. Рваные массивы тип[ ] [ ] имя = new тип[размер][ ]; int [ ] [ ]
- 16. class Program { static void Main() { try { int[][] MyArray; Console.Write("Ввведите количесвто строк: "); int
- 18. Оператор foreach Применяется для перебора элементов в специальным образом организованной группе данных, в том числе и
- 20. Скачать презентацию
Массив—
набор элементов одного и того же типа, объединенных общим именем.
С#-массивы
Массив—
набор элементов одного и того же типа, объединенных общим именем.
С#-массивы
Имя массива является ссылкой на область кучи (динамической памяти), в которой последовательно размещается набор элементов определенного типа.
Выделение памяти под элементы происходит на этапе инициализации массива.
Освобождение памяти - система сборки мусора - неиспользуемые массивы автоматически утилизируются данной системой.
Одномерные массивы
Одномерный массив – это фиксированное количество элементов одного и того
Одномерные массивы
Одномерный массив – это фиксированное количество элементов одного и того
Объявляется ссылочная переменная на массив
Выделяется память под требуемое количество элементов базового типа, и ссылочной переменной присваивается адрес нулевого элемента в массиве.
Объявление одномерного массива
Объявление одномерного массива
static void Main()
{
int[] myArray = { 0, 1, 2,
static void Main()
{
int[] myArray = { 0, 1, 2,
int i;
for (i = 0; i < 10; ++i)
Console.WriteLine(myArray[i]);
}
static void Main()
{
int[] myArray = new int[10];
int i;
for (i = 0; i < 10; i++)
myArray[i] = i * i;
for (i = 0; i < 10; i++)
Console.WriteLine(myArray[i]);
}
Существующей ссылке на одномерный массив присваивается ссылка на новый массив
int [
Существующей ссылке на одномерный массив присваивается ссылка на новый массив
int [
static void Main()
{
int[] myArray = { 0, 1, 2, 3, 4, 5};
int i;
for (i = 0; i < 10; i++)
Console.Write(" "+myArray[i]);
Console.WriteLine("\nНовый массив: ");
myArray = new int[] { 99, 10, 100, 18, 78, 23, 163, 9, 87, 49 };
for (i = 0; i < 10; i++)
Console.Write(" " + myArray[i]);
}
1.переменная myArray ссылалась на 6-ти элементный массив.
2.переменной myArray была присвоена ссылка на новый 10-элементный массив, в результате чего исходный массив оказался неиспользуемым, т.к. на него теперь не ссылается ни один объект.
3.он автоматически будет удален сборщиком мусора.
Массивы и исключения
static void Main()
{
int[] myArray = { 0,
Массивы и исключения
static void Main()
{
int[] myArray = { 0,
int i;
try
{
for (i = 0; i <= 10; i++) Console.WriteLine(myArray[i]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Exception: Выход за границу диапазона");
}
}
Выход за границы массива в C# расценивается как ошибка, в ответ на которую генерируется исключение - IndexOutOfRangeException
Массив как параметр
Так как имя массива фактически является ссылкой, то он
Массив как параметр
Так как имя массива фактически является ссылкой, то он
Все изменения элементов массива, являющегося формальным параметром, отразятся на элементах соответствующего массива, являющимся фактическим параметром.
class Program
{
static void Print(int n, int[] a) //n –
class Program
{
static void Print(int n, int[] a) //n –
{
for (int i = 0; i < n; i++) Console.Write("{0} ", a[i]);
Console.WriteLine(); }
static void Change(int n, int[] a)
{
for (int i = 0; i < n; i++)
if (a[i] > 0) a[i] = 0; // изменяются элементы массива
}
static void Main()
{
int[] myArray = { 0, -1, -2, 3, 4, 5, -6, -7, 8, -9 };
Print(10, myArray);
Change(10, myArray);
Print(10, myArray); }
}
Массив как объект
Массив как объект
Вызов статических методов происходит через обращение к имени класса
Например:
/*Обращение к статическому
Вызов статических методов происходит через обращение к имени класса
Например:
/*Обращение к статическому
Array.Sort(myArray)
Обращение к свойству или вызов экземплярного метода производится через обращение к экземпляру класса
Например:
myArray.Length
или
myArray.GetValue(i)
class Program {
static void Main() {
try {
int[] MyArray;
class Program {
static void Main() {
try {
int[] MyArray;
int n = int.Parse(Console.ReadLine());
MyArray = new int[n];
for (int i = 0; i < MyArray.Length; ++i)
{ Console.Write("a[{0}]=",i);
MyArray[i] = int.Parse(Console.ReadLine()); }
PrintArray("исходный массив:", MyArray);
Array.Sort(MyArray);
PrintArray("массив отсортирован по возрастанию", MyArray);
Array.Reverse(MyArray);
PrintArray("массив отсортирован по убыванию", MyArray); }
catch (FormatException) {
Console.WriteLine("неверный формат ввода данных"); }
catch (OverflowException)
{ Console.WriteLine("переполнение"); }
catch (OutOfMemoryException) {
Console.WriteLine("недостаточно памяти для создания нового объекта"); } }
static void PrintArray(string a, int[] mas) { Console.WriteLine(a);
for (int i = 0; i < mas.Length; i++) Console.Write("{0} ", mas[i]);
Console.WriteLine(); } } }
Многомерные массивы
тип [,] имя__массива;
тип [,] имя__массива = new тип [размер1, размер2];
тип
Многомерные массивы
тип [,] имя__массива;
тип [,] имя__массива = new тип [размер1, размер2];
тип
тип [,] имя__массива= new тип [,]{{элементы 1-ой строки}, … ,{элементы n-ой строки}};
Например:
int [,] a;
int [,] a= new int [3, 4];
int [,] a={{0, 1, 2}, {3, 4, 5}};
int [,] a= new int [,]{{0, 1, 2}, {3, 4, 5}};
class Program {
static void PrintArray(string a, int[,] mas) {
Console.WriteLine(a);
for (int i = 0;
class Program {
static void PrintArray(string a, int[,] mas) {
Console.WriteLine(a);
for (int i = 0;
{ for (int j = 0; j < mas.GetLength(1); j++)
Console.Write("{0} ", mas[i, j]);
Console.WriteLine(); }
}
static void Change(int[,] mas) {
for (int i = 0; i < mas.GetLength(0); i++)
for (int j = 0; j < mas.GetLength(1); j++)
if (mas[i, j] % 2 == 0) mas[i, j] = 0; }
static void Main(){
try { int[,] MyArray ={ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
PrintArray("исходный массив:", MyArray);
Change(MyArray);
PrintArray("итоговый массив", MyArray); }
catch (FormatException)
{ Console.WriteLine("неверный формат ввода данных"); }
catch (OverflowException)
{ Console.WriteLine("переполнение"); }
catch (OutOfMemoryException)
{ Console.WriteLine("недостаточно памяти для создания нового объекта"); } } }
Рваные массивы
тип[ ] [ ] имя = new тип[размер][ ];
int [
Рваные массивы
тип[ ] [ ] имя = new тип[размер][ ];
int [
jagged [0] = new int [ 4 ] ;
jagged [1] = new int [ 3 ] ;
jagged [2] = new int [ 5 ] ;
Так как каждая строка ступенчатого массива фактически является одномерным массивом, то с каждой строкой можно работать как с экземпляром класса Array.
Это является преимуществом ступенчатых массивов перед двумерными массивами.
class Program {
static void Main() {
try { int[][] MyArray;
class Program {
static void Main() {
try { int[][] MyArray;
int n = int.Parse(Console.ReadLine()); MyArray = new int[n][];
for (int i = 0; i < MyArray.Length; i++)
{ Console.Write("введите количество элементов в {0} строке: ", i);
int j = int.Parse(Console.ReadLine()); MyArray[i] = new int[j];
for (j = 0; j < MyArray[i].Length; j++)
{ Console.Write("a[{0}][{1}]= ", i, j); MyArray[i][j] = int.Parse(Console.ReadLine()); } }
PrintArray("исходный массив:", MyArray);
for (int i = 0; i < MyArray.Length; i++) Array.Sort(MyArray[i]);
PrintArray("измененный массив", MyArray); }
catch (FormatException)
{ Console.WriteLine("неверный формат ввода данных"); }
catch (OverflowException)
{ Console.WriteLine("переполнение"); }
catch (OutOfMemoryException)
{ Console.WriteLine("недостаточно памяти для создания нового объекта"); } }
static void PrintArray(string a, int[][] mas) {
Console.WriteLine(a);
for (int i = 0; i < mas.Length; i++)
{ for (int j = 0; j < mas[i].Length; j++) Console.Write("{0} ", mas[i][j]); Console.WriteLine(); } } }
Оператор foreach
Применяется для перебора элементов в специальным образом организованной группе
Оператор foreach
Применяется для перебора элементов в специальным образом организованной группе
Удобство заключается в том, что не требуется определять количество элементов в группе и выполнять перебор по индексу –просто указываем на необходимость перебрать все элементы группы.
foreach (<тип> <имя> in <группа>) <тело цикла>
где имя определяет локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из указанной группы, а тип соответствует базовому типу элементов группы.
Ограничение: с его помощью можно только просматривать значения элементов в группе данных, но нельзя их изменять.