Главная » Просмотр файлов » 1629295407-c61bfe4caba98380ea3e7cdae6295416

1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 30

Файл №846200 1629295407-c61bfe4caba98380ea3e7cdae6295416 (Шилдт Герберт - Полный справочник по C#) 30 страница1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200) страница 302021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 30)

Но та же самая инструкция можетбыть переписана следующим образом:return this.width * this.height;Здесь слово this ссылается на объект, для которого вызван метод area().Следовательно, выражение this.width ссылается на копию переменной width этогообъекта, а выражение this.height — на копию переменной height того же объекта.Например, если бы метод area() был вызван для объекта с именем x, то ссылка this впредыдущей инструкции была бы ссылкой на объект x.

Запись этой инструкции безиспользования слова this — это по сути ее сокращенный вариант,Вот как выглядит полный класс Rect, написанный с использованием ссылки this:using System;class Rect {public int width;public int height;public Rect(int w, int h) {this.width = w;this.height = h;}public int area() {return this.width * this.height;}}class UseRect {public static void Main() {Rect r1 = new Rect(4, 5);Rect r2 = new Rect(7, 9);}}Console.WriteLine("Площадь прямоугольника r1: " + r1.area());Console.WriteLine("Площадь прямоугольника r2: " + r2.area());В действительности ни один C#-программист не использует ссылку this так, какпоказано в этой программе, поскольку это не дает никакого выигрыша, да и стандартнаяформа выглядит проще. Однако из this можно иногда извлечь пользу.

Например,синтаксис C# допускает, чтобы имя параметра или локальной переменной совпадало сименем переменной экземпляра. В этом случае локальное имя будет скрывать переменнуюэкземпляра. И тогда доступ к скрытой переменной экземпляра можно получить с помощьюссылки this.

Например, следующий фрагмент кода (хотя его стиль написания нерекомендуется к применению) представляет собой синтаксически допустимый способопределения конструктора Rect().152Часть I. Язык C#public Rect(int width, int height) {this.width = width;this.height = height;}В этой версии конструктора имена параметров совпадают с именами переменныхэкземпляра, в результате чего за первыми скрываются вторые, а ключевое слово this какраз и используется для доступа к скрытым переменным экземпляра.Глава 6. Введение в классы, объекты и методы153Полныйсправочник поГлава 7Массивы и строкиВэтой главе мы возвращаемся к теме типов данных языка C# (познакомимся с типомданных string).

Помимо массивов здесь будет уделено внимание использованиюцикла foreach.МассивыМассив (array) — это коллекция переменных одинакового типа, обращение к которымпроисходит с использованием общего для всех имени. В C# массивы могут бытьодномерными или многомерными, хотя в основном используются одномерные массивы.Массивы представляют собой удобное средство группирования связанных переменных.Например, массив можно использовать для хранения значений максимальных дневныхтемператур за месяц, списка цен на акции или названий книг по программированию издомашней библиотеки.Массив организует данные таким способом, который позволяет легко имиманипулировать.

Например, если у вас есть массив, содержащий дивиденды,выплачиваемые по выбранной группе акций, то, построив цикл опроса всего массива,нетрудно вычислить средний доход от этих акций. Кроме того, организация данных вформе массива позволяет легко их сортировать в нужном направлении.Хотя массивы в C# можно использовать по аналогии с тем, как они используются вдругих языках программирования, C#-массивы имеют один специальный атрибут, аименно: они реализованы как объекты. Этот факт и стал причиной того, что рассмотрениемассивов в этой книге было отложено до введения понятия объекта Реализация массивов ввиде объектов позволила получить ряд преимуществ, причем одно из них (и к тому женемаловажное) состоит в том, что неиспользуемые массивы могут автоматическиутилизироваться системой сбора мусора.Одномерные массивыОдномерный массив — это список связанных переменных.

Такие списки широкораспространены в программировании Например, один одномерный массив можноиспользовать для хранения номеров счетов активных пользователей сети. В другом —можно хранить количество мячей, забитых в турнире бейсбольной командой.Для объявления одномерного массива используется следующая форма записи.тип[] имя_массива = new тип[размер];Здесь с помощью элемента записи тип объявляется базовый тип массива. Базовыйтип определяет тип данных каждого элемента, составляющего массив. Обратите вниманиена одну пару квадратных скобок за элементом записи тип.

Это означает, что определяетсяодномерный массив. Количество элементов, которые будут храниться в массиве,определяется элементом записи размер. Поскольку массивы реализуются как объекты, ихсоздание представляет собой двухступенчатый процесс. Сначала объявляется ссылочнаяпеременная на массив, а затем для него выделяется память, и переменной массиваприсваивается ссылка на эту область памяти. Таким образом, в C# массивы динамическиразмешаются в памяти с помощью оператора new.На заметкуЕсли вы уже знакомы с языками С или C++, обратите внимание на объявлениемассивов в C# Квадратные скобки располагаются за именем типа, а не заименем массиваГлава 7. Массивы и строки155Рассмотрим пример.

При выполнении приведенной ниже инструкции создается intмассив (состоящий из 10 элементов), который связывается со ссылочной переменноймассива sample.int[] sample = new int[10];Это объявление работает подобно любому объявлению объекта. Переменная sampleсодержит ссылку на область памяти, выделенную оператором new.Доступ к отдельному элементу массива осуществляется посредством индекса. Индексописывает позицию элемента внутри массива. В C# первый элемент массива имеет нулевойиндекс. Поскольку массив sample содержит 10 элементов, его индексы изменяются от 0 до9.

Чтобы получить доступ к элементу массива по индексу, достаточно указать нужныйномер элемента в квадратных скобках. Так, первым элементом массива sample являетсяsample[0], а последним — sample[9]. Например, следующая программа помещает вмассив sample числа от 0 до 9.// Демонстрация использования одномерного массива.using System;class ArrayDemo {public static void Main() {int[] sample = new int[10];int i;for(i = 0; i < 10; i = i+1)sample[i] = i;}}for(i = 0; i < 10; i = i+1)Console.WriteLine("sample[" + i + "]: " +sample[i]);0123456789sample[0]sample[1]sample[2]sample[3]sample[4]sample[5]sample[6]sample[7]sample[8]sample[9]Результаты выполнения этой программы имеют такой вид:sample[0]: 0samp1е[1]: 1sample[2]: 2sample[3]: 3sample[4]: 4sample[5]: 5sample[6]: 6sample[7]: 7sample[8]: 8sample[9]: 9Схематично массив sample можно представить в таком виде:Массивы широко применяются в программировании, поскольку позволяют легкообрабатывать большое количество связанных переменных.

Например, следующаяпрограмма вычисляет среднее арифметическое от множества значений, хранимых в массивеnums, опрашивая в цикле for все его элементы.156Часть I. Язык C#// Вычисление среднего арифметического от// множества значений.using System;class Average {public static void Main() {int[] nums = new int[10];int avg = 0;nums[0]nums[1]nums[2]nums[3]nums[4]nums[5]nums[6]nums[7]nums[8]nums[9]}}==========99;10;100;18;78;23;63;9;87;49;for(int i=0; i < 10; i++)avg = avg + nums[i];avg = avg / 10;Console.WriteLine("Среднее: " + avg);Вот результат выполнения программы:Среднее: 53Инициализация массиваВ предыдущей программе значения массиву nums были присвоены вручную, т.е.

спомощью десяти отдельных инструкций присваивания. Существует более простой путьдостижения той же цели: массивы можно инициализировать в момент их создания. Форматинициализации одномерного массива имеет следующий вид:тип[] имя_массива = [val1, val2, ..., valN];Здесь начальные значения, присваиваемые элементам массива, задаются с помощьюпоследовательности val1—valN. Значения присваиваются слева направо, в порядкевозрастания индекса элементов массива.

C# автоматически выделяет для массива областьпамяти достаточно большого размера, чтобы хранить заданные значения инициализации(инициализаторы). В этом случае нет необходимости использовать в явном виде операторnew. Теперь рассмотрим более удачный вариант программы Average.// Вычисление среднего арифметического от// множества значений.using System;class Average {public static void Main() {int[] nums = { 99, 10, 100, 18, 78,23, 63, 9, 87, 49 };Глава 7. Массивы и строки157int avg = 0;for(int i=0; i < 10; i++)avg = avg + nums[i];}}avg = avg / 10;Console.WriteLine("Среднее: " + avg);Хотя, как уже было отмечено выше, в этом нет необходимости, при инициализациимассива все же можно использовать оператор new. Например, массив nums из предыдущейпрограммы можно инициализировать и таким способом, хотя он и несет в себе некоторуюизбыточность.int[] nums = new int[] { 99, 10, 100, 18, 78,23, 63, 9, 87, 49 };Несмотря на избыточность new-форма инициализации массива оказывается полезнойв том случае, когда уже существующей ссылочной переменной массива присваиваетсяновый массив.

Например:int[] nums;nums = new int[] { 99, 10, 100, 18, 78,23, 63, 9, 87, 49 };Здесь массив nums объявляется в первой инструкции и инициализируется во второй.И еще. При инициализации массива допустимо также явно указывать его размер, но размерв этом случае должен соответствовать количеству инициализаторов. Вот, например, ещеодин способ инициализации массива nums.int[] nums = new int[10] { 99, 10, 100, 18, 78,23, 63, 9, 87, 49 };В этом объявлении размер массива nums явно задан равным 10.Соблюдение "пограничного режима"Границы массивов в C# строго "охраняются законом". Выход за границырасценивается как динамическая ошибка. Чтобы убедиться в этом, попытайтесь выполнитьследующую программу, в которой намеренно делается попытка нарушения границ массива.// Демонстрация выхода за границу массива.using System;class ArrayErr {public static void Main() {int[] sample = new int[10];int i;}}// Организуем нарушение границы массива.for(i = 0; i < 100; i = i+1)sample[i] = i;Как только i примет значение 10, будет сгенерирована исключительная ситуациятипа IndexOutOfRangeException, и программа прекратит выполнение.158Часть I.

Язык C#Многомерные массивыНесмотря на то что в программировании чаше всего используются одномерныемассивы, их многомерные "собратья" — также не редкость. Многомерным называется такоймассив, который характеризуется двумя или более измерениями, а доступ к отдельномуэлементу осуществляется посредством двух или более индексов.Двумерные массивыПростейший многомерный массив — двумерный. В двумерном массиве позициялюбого элемента определяется двумя индексами. Если представить двумерный массив ввиде таблицы данных, то один индекс означает строку, а второй — столбец.Чтобы объявить двумерный массив целочисленных значений размером 10x20 сименем table, достаточно записать следующее:int[,] table = new int[10, 20];Обратите особое внимание на то, что значения размерностей отделяются запятой.Синтаксис первой части этого объявления[,]означает, что создается ссылочная переменная двумерного массива.

Для реальноговыделения памяти для этого массива с помощью оператора new используется болееконкретный синтаксис:int[10, 20]Тем самым обеспечивается создание массива размером 10x20, причем значенияразмерностей также отделяются запятой.Чтобы получить доступ к элементу двумерного массива, необходимо указать обаиндекса, разделив их запятой. Например, чтобы присвоить число 10 элементу массиваtable, позиция которого определяется координатами 3 и 5, можно использоватьследующую инструкцию:table[3, 5] = 10;Рассмотрим пример программы, которая заполняет двумерный массив числами от 1до 12, а затем отображает содержимое этого массива.// Демонстрация использования двумерного массива.using System;class TwoD {public static void Main() {int t, i;int[,] table = new int[3, 4];}}for(t=0; t < 3; ++t) {for(i=0; i < 4; ++i) {table[t,i] = (t*4)+i+1;Console.Write(table[t,i] + " ");}Console.WriteLine();}Глава 7.

Характеристики

Тип файла
PDF-файл
Размер
5,05 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее