Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Массивы.И снова здравствуйте. Синтаксис создания массивов в языке C# несколько отличается от привычного :) вам синтаксиса языка C++. Надеюсь, вы сидите... Массив в C# является ссылочным типом (см. предыдущий урок) и является наследником абстрактного класса System.Array. Таким образом, массив имеет собственные методы, поля и свойства (например, свойство Length хранит длину массива). Массив может хранить элементы любого типа, но для всех элементов массива тип должен быть одним и тем же. Базовым индексом массива является 0. Массивы могут одномерными, многомерными или "зубчатыми". Одномерные массивы // создание массива из 10 элементов типа int // все элементы массива инициализируются нулями int [] intArray = new int [10]; // создание массива из 10 элементов типа string // все элементы массива инициализируются null, // т. к. string - ссылочный тип string [] stringArray = new string [10]; Инициализация одномерных массивов // создание + инициализация int [] arr1 = new int[] {0, 3, 7, 17, 25}; // создание + инициализация (укороченный вариант) int [] arr2 = {0, 3, 7, 17, 25}; // Можно объявить массив без инициализации int [] arr3; // Но его нельзя использовать, пока он не создан с помощью оператора new /* arr3[0] = 0; // Ошибка arr3 = {0, 3, 7, 17, 25}; // тоже ошибка */ /* arr3 = new int [] {0, 3, 7, 17, 25}; // правильно arr3[0] = 10; // правильно */ Многомерные массивы // создание двумерного массива из 10x10 элементов типа int // все элементы массива инициализируются нулями int [,] intArray = new int [10, 10]; // создание трехмерного массива из 10x10x10 элементов типа string // все элементы массива инициализируются null, // т. к. string - ссылочный тип string [,,] stringArray = new string [10, 10, 10]; Инициализация многомерных массивов // создание + инициализация массива 3x2 int [,,] arr1 = new int[,] { {0, 3}, {7, 17}, {25, 0} }; // создание + инициализация (укороченный вариант) int [] arr2 = { {0, 3}, {7, 17}, {25, 0} }; // Можно объявить массив без инициализации int [,] arr3; // Но его нельзя использовать, пока он не создан с помощью оператора new /* arr3[0,0] = 0; // Ошибка arr3 = { {0, 3}, {7, 17}, {25, 0} }; // тоже ошибка */ /* arr3 = new int[,] { {0, 3}, {7, 17}, {25, 0} }; // правильно arr3[0, 0] = 10; // правильно */ "Зубчатые" массивы Если массива, описанные выше, сходны со статическими (нединамическими) массивами в C++, то "зубчатые" массивы - это ближайший аналог многомерных динамических массивов в C++. "Зубчатый" массив хранит в качестве элементов другие массивы, и каждый из этих массивов может иметь произвольную размерность. То есть "зубчатый" массив может не быть прямоугольным. // создание "зубчатого" массива из 3 элементов int [][] intArray = new int [3][]; for(int i = 0; i < intArray.Length; i++) // каждый элемент содержит одномерный массив из 5 элементов intArray[i] = new int[5]; // создание "зубчатого" непрямоугольного массива из 3 элементов int [][] floatArray = new float [3][]; for(int i = 0; i < floatArray.Length; i++) // каждый элемент содержит одномерный массив из i + 1 элементов floatArray[i] = new float[i + 1]; Инициализация "зубчатых" массивов // вариант int [][] intArray = new int [3][]; intArray[0] = new int[] {1, 2, 3, 4, 5}; intArray[1] = new int[] {3, 4, 5}; intArray[2] = new int[] {1, 2, 3, 4, 5, 6, 7}; // вариант int[][] myArray = new int [][] { new int[] {1, 2, 3, 4, 5}, new int[] {3, 4, 5}, new int[] {1, 2, 3, 4, 5, 6, 7} }; // укороченный вариант int[][] myArray = { new int[] {1, 2, 3, 4, 5}, new int[] {3, 4, 5}, new int[] {1, 2, 3, 4, 5, 6, 7} }; // вариант ("зубчатые" и "обычные" массивы можно смешивать) int [][,] myMixedArray = new int [3][,] { new int[,] { {1, 2}, {3, 4} }, new int[,] { {5, 6}, {7, 8}, {9, 10} }, new int[,] { {11, 12} } }; // Доступ к элементу массива System.Console.WriteLine(myMixedArray[0][0,0]); // отобразится 1 // Можно объявить массив без инициализации int [][] arr3; // Но его нельзя использовать, пока он не создан с помощью оператора new *********** при обращению к элементу за пределами массива (по некорректному индексу) генерируется исключение IndexOutOfRangeException. ***********
|
|
Библиотека программиста. 2009. |
|