КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Массивы
Оператор ветвления Здесь выполняется одна из альтернативных ветвей в зависимости от значения управляющего выражения: switch (nValue) { case 1: case 2: case 3: case 4: case 5: Console.WriteLine("Rabbit walk through the street"); break; // this line is necessary } switch (someString) { default: break; case null: break; case "leavetakings": // two cases for code case "greetings": goto default; case "goodbye": goto case "leavetakings"; case "error": // int i = 5; // if you uncomment previous line you should get // "control cannot fall through from one case to another" error case "next case": throw new ApplicationException(); } Отличительной возможностью C# является возможность ветвления по строкам и запрет на переход между блоками без явного на это указания (при компиляции выдается ошибка) Есть возможность сопоставить одному блоку несколько значений (в примере - " leavetakings " и " greetings "). Есть возможность передать управление на другой блок (goto case x; goto default;). В случае, если делается ветвление по переменной типа string, значение которой равно null, а соответствующий case отсутствует, будет выполняться ветвь default (если такая есть). null - вполне полноправное значение переменной типа string и NullPointerException оператором switch выбрасываться не будет. Массивы имеют тип System.Array и не копируются при присваивании (т.е. это ссылки, а не значения). Массивы можно использовать в циклах foreach. Свойство Length содержит общее число элементов массива (по всем измерениям). Одномерные массивы (векторы в C++). Тип массива включает в себя информацию о базовом типом элементов, которые может содержать массив, и о размерности (количестве индексов) массива. Одномерные массивы определяются так: int[] arr = new int[100]; Здесь arr - имя массива, 100 - количество элементов в массиве, первый элемент - arr[0], последний arr[99]. Заполнить массив можно тремя способами: int i = new int[2]; i[0] = 1; i[1] = 2;
int[] i = new int[] {1,2}; int[] i = {1,2}; Используя класс System.Array можно сделать массив с произвольным значением индекс первого элемента. Прямоугольные массивы (Такой конструкции нет в Java). Двумерный массив 2 x 3: int[,] squareArray1 = new int[2,3]; int[,] squareArray2 = {{1, 2, 3}, {4, 5, 6}};
for(i = 0; i < squareArray2.GetLength(0); i++) { for (j = 0; j < squareArray2.GetLength(1); j++) { Console.WriteLine(squareArray[i,j]); } } Чтобы получить граничные индексы элементов в некотором измерении, нужно воспользоваться функциями GetUpperBound(int i) и GetLowerBound(int i), где i - номер измерения (считая с нуля). GetLength(int i) вернет количество элементов в некотором измерении. Массивы из массивов (Jagged Arrays). Они подходят для текстовых редакторов. // memory allocation and object zeroing int[][] jag1 = new int[2][]; jag1[0] = new int [4]; jag1[1] = new int [6]; for (int i = 0; i < jag1.GetLength(0); i++) { for (int j = 0; j < jag1[h].GetLength(0); j++) { Console.WriteLine(jag1[i][j]); } }
// creating an initialized array int[][] jag2 = new int[][] { new int[] {1, 2, 3, 4}, new int[] {5, 6, 7, 8, 9, 10} }; for (int i = 0; i < jag2.Length; i++) { for (int j = 0; j < jag2[h].Length; j++) { Console.WriteLine(jag2[i][j]); } } Indexer'ы Индексаторы (как бы их по-русски поудачнее назвать?) могут пригодиться если нужно: 1. сделать разреженный массив; 2. хранить массив не в памяти, а, к примеру, на диске; 3. вычислять значения массива на лету и хранить только измененные значения Синтаксис: public double this[int i, int j] { set { MyCodeToStoreValue(i, j, value); } get { double res = MyMethodToRetrieveValue(i, j); return res; } } Здесь value - ключевое слово, которое обозначает значение
Дата добавления: 2015-07-02; Просмотров: 293; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |