Вы находитесь на странице: 1из 15

УДК 004.

43
К 32.973.26-018.1
19

а ь в, .
19 C# . /
.—М :Э , 2018. — 592 . — (
).
ISBN 978-5-04-092519-3
, -
, -
C#. ,
, , -
, , ,
.
УДК 004.43
К 32.973.26-018.1

ISBN 978-5-04-092519-3 © Оф . ООО «И а ь в «Э », 2018


Оглавление

Введение. Язык С# и технология .Net Framework . . . . . . . . . . . . . . . . 7


История создания языка С# . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Особенности языка С# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Программное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Собственно о книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Обратная связь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Глава 1. Знакомство с языком С# . . . . . . . . . . . . . . . . . . . . . . . . . 21


Структура программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Первая программа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Использование среды разработки . . . . . . . . . . . . . . . . . . . . . . 27
Пространство имен . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Программа с диалоговым окном . . . . . . . . . . . . . . . . . . . . . . . 33
Настройка вида диалогового окна . . . . . . . . . . . . . . . . . . . . . . 42
Окно с полем ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Консольный ввод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Считывание чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Форматированный вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . 60

Глава 2. Базовые типы и операторы . . . . . . . . . . . . . . . . . . . . . . . . 62


Переменные и базовые типы данных . . . . . . . . . . . . . . . . . . . . 63
Литералы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Управляющие символы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Преобразование типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Объявление переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Арифметические операторы . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Операторы сравнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Логические операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Побитовые операторы и двоичные коды . . . . . . . . . . . . . . . . . . 90
Оператор присваивания . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Сокращенные формы операции присваивания . . . . . . . . . . . . . 102
Тернарный оператор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Приоритет операторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Примеры программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 113

3
Оглавление

Глава 3. Управляющие инструкции . . . . . . . . . . . . . . . . . . . . . . . 115


Условный оператор if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Вложенные условные операторы . . . . . . . . . . . . . . . . . . . . . . 123
Оператор выбора switch . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Оператор цикла while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Оператор цикла do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Оператор цикла for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Инструкция безусловного перехода goto . . . . . . . . . . . . . . . . . 156
Перехват исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 168

Глава 4. Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171


Одномерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Инициализация массива . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Операции с массивами . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Цикл по массиву . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Двумерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Многомерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Массив со строками разной длины . . . . . . . . . . . . . . . . . . . . 213
Массив объектных ссылок . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Параметры командной строки . . . . . . . . . . . . . . . . . . . . . . . 223
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 227

Глава 5. Статические методы . . . . . . . . . . . . . . . . . . . . . . . . . . . 230


Знакомство со статическими методами . . . . . . . . . . . . . . . . . . 231
Перегрузка статических методов . . . . . . . . . . . . . . . . . . . . . . 238
Массив как аргумент метода . . . . . . . . . . . . . . . . . . . . . . . . 242
Массив как результат метода . . . . . . . . . . . . . . . . . . . . . . . . 247
Механизмы передачи аргументов методу . . . . . . . . . . . . . . . . 254
Рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Методы с произвольным количеством аргументов . . . . . . . . . . 271
Главный метод программы . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 280

Глава 6. Знакомство с классами и объектами . . . . . . . . . . . . . . . . . 282


Базовые принципы ООП . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Классы и объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Описание класса и создание объекта . . . . . . . . . . . . . . . . . . . 289
Использование объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Закрытые члены класса и перегрузка методов . . . . . . . . . . . . . 299
Конструктор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Деструктор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Статические члены класса . . . . . . . . . . . . . . . . . . . . . . . . . . 314
4
Оглавление

Ключевое слово this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321


Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 330

Глава 7. Работа с текстом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333


Класс String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Создание текстового объекта . . . . . . . . . . . . . . . . . . . . . . . . 336
Операции с текстовыми объектами . . . . . . . . . . . . . . . . . . . . 344
Методы для работы с текстом . . . . . . . . . . . . . . . . . . . . . . . . 356
Метод ToString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 379

Глава 8. Перегрузка операторов . . . . . . . . . . . . . . . . . . . . . . . . . 381


Операторные методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Перегрузка арифметических
и побитовых операторов . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Перегрузка операторов сравнения . . . . . . . . . . . . . . . . . . . . . 404
Перегрузка операторов true и false . . . . . . . . . . . . . . . . . . 423
Перегрузка логических операторов . . . . . . . . . . . . . . . . . . . . 427
Перегрузка операторов приведения типов . . . . . . . . . . . . . . . . 432
Команды присваивания
и перегрузка операторов . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 445

Глава 9. Свойства и индексаторы . . . . . . . . . . . . . . . . . . . . . . . . 448


Знакомство со свойствами . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Использование свойств . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Знакомство с индексаторами . . . . . . . . . . . . . . . . . . . . . . . . 475
Использование индексаторов . . . . . . . . . . . . . . . . . . . . . . . . 481
Двумерные индексаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Многомерные индексаторы . . . . . . . . . . . . . . . . . . . . . . . . . 506
Перегрузка индексаторов . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 520

Глава 10. Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523


Знакомство с наследованием . . . . . . . . . . . . . . . . . . . . . . . . 524
Наследование и уровни доступа . . . . . . . . . . . . . . . . . . . . . . 529
Наследование и конструкторы . . . . . . . . . . . . . . . . . . . . . . . 535
Объектные переменные базовых классов . . . . . . . . . . . . . . . . 543
Замещение членов при наследовании . . . . . . . . . . . . . . . . . . . 549
Переопределение виртуальных методов . . . . . . . . . . . . . . . . . 553
Переопределение и замещение методов . . . . . . . . . . . . . . . . . 558
Переопределение и перегрузка методов . . . . . . . . . . . . . . . . . 562
5
Оглавление

Наследование свойств и индексаторов . . . . . . . . . . . . . . . . . . 565


Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . 576

Заключение. Что будет дальше . . . . . . . . . . . . . . . . . . . . . . . . . 580

Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581


введение
Язык С# и технОлОгиЯ
.Net FramewOrK

Русская речь не сложнее других. Вон Марга-


дон — дикий человек — и то выучил.
из к/ф «Формула любви»

Язык С# уже многие годы неизменно входит в список языков програм-


мирования, самых востребованных среди разработчиков программного
обеспечения. Язык является базовым для технологии .Net Framework,
разработанной и поддерживаемой корпорацией Microsoft. Именно язы-
ку С# посвящена книга, которую читатель держит в руках.

история создания языка С#


История, леденящая кровь. Под маской овцы
скрывался лев.
из к/ф «Покровские ворота»

Язык С# создан инженерами компании Microsoft в 1998–2001 годах.


Руководил группой разработчиков Андерс Хейлсберг, который до того
трудился в фирме Borland над созданием компилятора для языка Pascal
и участвовал в создании интегрированной среды разработки Delphi.
Язык С# появился после языков программирования С++ и Java. Бога-
тый опыт их использования был во многом учтен разработчиками С#.


i на заметку
Синтаксис языка С# похож на синтаксис языков С++ и Java. Но сход-
ство внешнее. У языка С# своя уникальная концепция. Вместе с тем
многие управляющие инструкции в языке С# будут знакомы тем, кто
программирует в C++ и Java.

7
Введение

Вообще же из трех языков программирования С++, Java и C# исто-


рически первым появился язык С++. Затем на сцену вышел язык
Java. И уже после этого появился язык программирования С#.

Для понимания места и роли языка С# на современном рынке про-


граммных технологий разумно начать с языка программирования C, ко-
торый в свое время стал мощным стимулом для развития программных
технологий как таковых. Именно из языка C обычно выводят генеало-
гию языка С#. Мы тоже будем придерживаться классического подхода.

Язык программирования C появился в 1972 году, его разработал Де-


нис Ритчи. Язык C постепенно набирал популярность и в итоге стал
одним из самых востребованных языков программирования. Этому
способствовал ряд обстоятельств. В первую очередь, конечно, сыграл
роль лаконичный и простой синтаксис языка. Да и общая концепция
языка С оказалась исключительно удачной и живучей. Поэтому ког-
да встал вопрос о разработке нового языка, который бы поддерживал
парадигму объектно ориентированного программирования (ООП),
то выбор естественным образом пал на язык С: язык программирова-
ния С++, появившийся в 1983 году, представлял собой расширенную
версию языка С, адаптированную для написания программ с привлече-
нием классов, объектов и сопутствующих им технологий. В свою оче-
редь, при создании языка программирования Java отправной точкой
стал язык С++. Идеология языка Java отличается от идеологии языка
С++, но при всем этом базовые управляющие инструкции и операторы
в обоих языках схожи.


i на заметку
Язык программирования Java официально появился в 1995 году
и стал популярным благодаря универсальности программ, напи-
санных на этом языке. Технология, используемая в Java, позволяет
писать переносимые программные коды, что исключительно важно
при разработке приложений для использования в Internet.

Нет ничего удивительного, что при создании языка программирова-


ния С# традиция была сохранена: синтаксис языка С# во многих мо-
ментах будет знаком тем, кто уже программирует на C++ и Java. Хотя
такое сходство — внешнее. Языки очень разные, поэтому расслабляться
не стоит. Да и базовые синтаксические конструкции в языке С# имеют
свои особенности. Все это мы обсудим в книге.

8
Язык С# и технология .Net Framework

Особенности языка С#
Обо мне придумано столько небылиц, что
я устаю их опровергать.
из к/ф «Формула любви»

Язык программирования С# — простой, красивый, эффективный и гибкий.


С помощью программ на языке С# решают самые разные задачи. На С#
можно создавать как небольшие консольные программы, так и програм-
мы с графическим интерфейсом. Код, написанный на языке С#, лаконичен
и понятен (хотя здесь, конечно, многое зависит от программиста). В этом
отношении язык программирования С# практически не имеет конкурентов.


i на заметку
Язык С# создавался после появления языков С++ и Java. В С# были
учтены и по возможности устранены «недостатки» и «недоработки»,
которые есть в C++ и Java. Иногда язык С# упоминается как усовер-
шенствованная версия языков С++ и Java, хотя концепции у них со-
вершенно разные, так что утверждение довольно поверхностно.

Кроме собственно преимуществ языка С#, немаловажно и то, что язык


поддерживается компанией Microsoft. Поэтому он идеально подходит,
чтобы писать программы для выполнения под управлением операцион-
ной системы Windows.

 ПОдрОбнОСти
Операционной системой Windows и технологией .Net Framework ком-
пании Microsoft область применения языка С# не ограничивается.
Существуют альтернативные проекты (такие, например, как Mono),
позволяющие выполнять программы, написанные на языке С#, под
управлением операционных систем, отличных от Windows. Вместе
с тем мы в книге будем исходить из того, что используются «родные»
средства разработки и операционная система Windows.

Как отмечалось выше, язык С# является неотъемлемой частью тех-


нологии (или платформы) .Net Framework. Основу платформы .Net
Framework составляет среда исполнения CLR (сокращение от Common
Language Runtime) и библиотека классов, которая используется при
программировании на языке С#.

9
Введение


i на заметку
Платформа .Net Framework позволяет использовать и иные языки
программирования, а не только С# — например, С++ или Visual Basic.
Возможности платформы .Net Framework позволяют объединять
«в одно целое» программные коды, написанные на разных языках
программирования. Это очень мощная технология, но для нас инте-
рес представляет написание программных кодов на языке С#. Имен-
но особенности и возможности языка С# мы будем обсуждать в книге.

При компилировании программного кода, написанного на языке С#, соз-


дается промежуточный код. Это промежуточный код реализован на языке
MSIL (сокращение от Microsoft Intermediate Language). Промежуточный
код выполняется под управлением системы CLR. Система CLR запускает
JIT-компилятор (сокращение от Just In Time), который, собственно, и пе-
реводит промежуточный код в исполняемые инструкции.

 ПОдрОбнОСти
Файл с программным кодом на языке С# сохраняется с расширени-
ем .cs. После компиляции программы создается файл с расширени-
ем .exe. Но выполнить этот файл можно только на компьютере, где
установлена система .Net Framework. Такой код называется управля-
емым (поскольку он выполняется под управлением системы CLR).

Описанная нетривиальная схема компилирования программ с привле-


чением промежуточного кода служит важной цели. Дело в том, что тех-
нология .Net Framework ориентирована на совместное использование
программных кодов, написанных на разных языках программирования.
Базируется эта технология на том, что программные коды с разных язы-
ков программирования «переводятся» (в процессе компиляции) в про-
межуточный код на общем универсальном языке. Проще говоря, коды
на разных языках программирования приводятся «к общему знаменате-
лю», которым является промежуточный язык MSIL.

 ПОдрОбнОСти
Программы, написанные на Java, тоже компилируются в промежуточ-
ный байт-код. Байт-код выполняется под управлением виртуальной
машины Java. Но по сравнению с языком С# имеется принципиальное
отличие. Байт-код, в который переводится при компиляции Java-про-
грамма, имеет привязку к одному языку программирования — языку

10
Язык С# и технология .Net Framework

Java. И в Java схема с промежуточным кодом нужна для обеспечения


универсальности программ, поскольку промежуточный байт-код не за-
висит от типа операционной системы (и поэтому переносим). Особен-
ность операционной системы учитывается той виртуальной машиной
Java, которая установлена на компьютере и выполняет промежуточный
байт-код. Промежуточный код, который используется в технологии
.Net Framework, не привязан к конкретному языку программирования.
Например, что при компиляции программы на языке С#, что при ком-
пиляции программы на языке Visual Basic получаются наборы инструк-
ций на одном и том же промежуточном языке MSIL. И нужно это, еще
раз подчеркнем, для обеспечения совместимости разных программ-
ных кодов, реализованных на разных языках.

Весь этот процесс для нас важен исключительно с познавательной точки


зрения. Более принципиальными являются вопросы, касающиеся осо-
бенностей собственно языка С#.

Первое, что стоит отметить: язык С# полностью объектно ориентиро-


ванный. Это означает, что даже самая маленькая программа на языке С#
должна содержать описание хотя бы одного класса.


i на заметку
Здесь есть методологическая проблема. Состоит она в том, что не-
подготовленному читателю сложно воспринимать концепцию ООП
сразу, без предварительной подготовки. Мы найдем выход в том,
чтобы использовать определенный шаблон при написании про-
грамм. Затем, по мере знакомства с языком С#, многие моменты
станут простыми и понятными.

Как отмечалось выше, базовые синтаксические конструкции языка С#


напоминают (или просто совпадают) соответствующие конструкции
в языках С++ и/или Java. Но, кроме них, язык С# содержит множество
интересных и полезных особенностей, с которыми мы познакомимся
в книге.

 ПОдрОбнОСти
Знакомым с языками программирования С++ и/или Java будет
полезно узнать, что в языке С#, как и в языке С++, используются
пространства имен, указатели, существует переопределение опе-
раторов. Также в C#, как и в Java, имеются интерфейсы, объекты
реализуются через ссылки, используется система автоматической

11
Введение

«уборки мусора». А еще в C# используются делегаты, концепция


которых идеологически близка к концепции указателей на функции
в C++. Массивы в C# больше напоминают массивы Java, но вооб-
ще в C# они достаточно специфичные. Индексаторы в C# позво-
ляют индексировать объекты — подобный механизм, основанный
на переопределении оператора «квадратные скобки», есть в C++.
Свойства, которые используются в C#, представляют собой нечто
среднее между полем и методом, хотя, конечно, больше напомина-
ют поле с особым режимом доступа.

Есть в языке С# и «классические» механизмы, характерные для боль-


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

Программное обеспечение
Показывай свою гравицапу. Если фирменная
вещь — возьмем!
из к/ф «Кин-дза-дза»

Для работы с языком программирования С# на компьютере должна


быть установлена платформа .Net Framework. Компилятор языка С#
входит в стандартный набор этой платформы. Поэтому, если на компью-
тере установлена платформа .Net Framework, этого достаточно для нача-
ла программирования в C#. Обычно дополнительно еще устанавливают
среду разработки, благодаря которой процесс программирования на C#
становится простым и приятным.

Если мы хотим написать программу (на языке С#), сначала нам нужно
набрать соответствующий программный код. Теоретически сделать это
можно в обычном текстовом редакторе. В таком случае набираем в тек-
стовом редакторе код программы и сохраняем файл с расширением .cs
(расширение для файлов с программами, написанными на языке С#).

12
Язык С# и технология .Net Framework

После того как код программы набран и файл с программой сохранен,


ее следует откомпилировать. Для этого используют программу-компи-
лятор csc.exe, которая устанавливается, как отмечено выше, при уста-
новке платформы .Net Framework.

 ПОдрОбнОСти
Алгоритм действий такой: в командной строке указывается назва-
ние программы-компилятора csc.exe, а затем через пробел ука-
зывается название файла с программой на языке С#. Допустим,
мы записали код программы в файл MyProgram.cs. Тогда для ком-
пиляции программы в командной строке используем инструкцию
csc.exe MyProgram.cs или csc MyProgram.cs (расширение exe-
файла можно не указывать). Если компиляция проходит нормально,
то в результате получаем файл с расширением .exe, а название
файла совпадает с названием исходного файла с программой (в на-
шем случае это MyProgram.exe). Полученный в результате компиля-
ции exe-файл запускают на выполнение.
Файл csc.exe по умолчанию находится в каталоге C:\Windows\
Microsoft.NET\Framework внутри папки с номером версии — на-
пример, v3.5 или v4.0. Также для компилирования программы
из командной строки придется, скорее всего, выполнить некоторые
дополнительные настройки — например, в переменных среды за-
дать путь для поиска компилятора csc.exe.

Хотя такая консольная компиляция вполне рабочая, прибегают к ней


редко. Причина в том, что не очень удобно набирать код в текстовом
редакторе, затем компилировать программу через командную строку
и запускать вручную исполнительный файл. Намного проще восполь-
зоваться специальной программой — интегрированной средой разработ-
ки (IDE от Integrated Development Environment). Среда разработки со-
держит в себе все наиболее важные «ингредиенты», необходимые для
«приготовления» такого «блюда», как программа на языке С#. При ра-
боте со средой разработки пользователь получает в одном комплекте ре-
дактор кодов, средства отладки, компилятор и ряд других эффективных
утилит, значительно облегчающих работу с программными кодами. Мы
тоже прибегнем к помощи среды разработки. Нам понадобится прило-
жение Microsoft Visual Studio.

Загрузить установочные файлы можно с сайта компании Microsoft


www.microsoft.com (на сайте следует найти страницу загрузок).

13
Введение

После установки среды разработки мы получаем все, что нужно для


успешной разработки приложений на языке С#.

 ПОдрОбнОСти
Приложение Microsoft Visual Studio является коммерческим. Одна-
ко у него есть некоммерческая «упрощенная» версия Visual Studio
Express, которая вполне подойдет для изучения языка программи-
рования С#.


i на заметку
Кроме языка программирования С# среда разработки Visual Studio
позволяет создавать программы на языках Visual Basic и C++. Часть
настроек, влияющих на функциональность среды разработки, опре-
деляется в процессе установки.

Как выглядит окно приложения Visual Studio Express (версия 2015), по-
казано на рис. В.1.

рис. в.1. Окно приложения Visual Studio Express 2015

Основные операции, выполняемые при создании приложений с помо-


щью среды разработки Visual Studio Express, мы кратко рассмотрим в ос-
новной части книги, когда будем обсуждать программные коды.

14
Язык С# и технология .Net Framework

Среда разработки Visual Studio хотя и предпочтительная, но далеко


не единственная. Существуют другие приложения, используемые при
создании программ на языке С#. Причем масштабы использования аль-
тернативных средств разработки постоянно расширяются. Но, в любом
случае, имеет смысл знать, какие есть варианты помимо Visual Studio.
Нас интересуют в первую очередь среды разработки для программиро-
вания на C#, распространяемые на некоммерческой основе.

Среда разработки SharpDevelop является приемлемым выбором и по-


зволяет создавать приложения разного уровня сложности. По сути,
данная среда разработки является интегрированным отладчиком, вза-
имодействующим со средой .Net Framework. Окно среды разработки
SharpDevelop показано на рис. В.2.

рис. В.2. Окно среды разработки SharpDevelop

Загрузить все необходимые файлы для установки среды разработки


SharpDevelop можно на сайте проекта www.icsharpcode.net.

Еще один проект, заслуживающий внимания, называется Mono


(сайт поддержки проекта www.mono-project.com). Проект раз-
вивается в основном благодаря поддержке компании Xamarin (сайт
www.xamarin.com). В рамках этого проекта была создана среда

15
Введение

разработки MonoDevelop (сайт www.monodevelop.com), предназна-


ченная, кроме прочего, для создания приложений на языке С#. На дан-
ный момент разработчикам для установки предлагается среда разработ-
ки Xamarin Studio, которая позиционируется как продолжение проекта
MonoDevelop. Окно среды разработки Xamarin Studio показано на рис. В.3.

рис. В.3. Окно среды разработки Xamarin Studio

Методы работы с перечисленными выше средами разработки не явля-


ются предметом книги. Отметим лишь следующие обстоятельства:
• У читателя есть альтернатива в плане использования среды разра-
ботки.
• Среды разработки не являются эквивалентными по своим функци-
ональным возможностям. Наиболее надежный вариант связан с ис-
пользованием среды разработки Microsoft Visual Studio. Все приме-
ры из книги тестировались именно в этой среде разработки.
• Нужно иметь в виду, что в силу специфики сред разработки
SharpDevelop и Xamarin Studio некоторые программные коды,
выполняемые в Microsoft Visual Studio, могут не выполняться
в SharpDevelop и Xamarin Studio (и наоборот).

16

Вам также может понравиться