
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .NET
- •Создание исходной программы
- •Тестовая поездка
- •Каркас программы
- •Комментарии
- •Введение в хитрости панели элементов
- •Повторное использование кода из панели элементов
- •Правила объявления переменных
- •Вариации на тему int
- •Объявление переменной с плавающей точкой
- •Ограничения переменных с плавающей точкой
- •Объявление переменных типа decimal
- •Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
- •Логичен ли логический тип
- •Символьные типы
- •Что такое тип-значение
- •Неизменяемость строк
- •Основные операции над строками
- •Сравнение строк
- •Сравнение без учета регистра
- •Отличие строк в разных регистрах
- •Преобразование символов строки в символы верхнего или нижнего регистра
- •Поиск в строках
- •Как искать
- •Пуста ли строка
- •Удаление пробельных символов
- •Анализ числового ввода
- •Обработка последовательности чисел
- •Объединение массива строк в одну строку
- •Арифметика
- •Простейшие операторы
- •Порядок выполнения операторов
- •Оператор инкремента
- •Сравнение чисел с плавающей точкой
- •Составные логические операторы
- •Вычисление типа операции
- •Типы при присваивании
- •Перегрузка операторов
- •Ветвление с использованием if и switch
- •Инструкция if
- •Инструкция else
- •Как избежать else
- •Вложенные инструкции if
- •Конструкция switch
- •Циклы
- •Цикл без счетчика
- •Правила области видимости
- •Пример
- •Зачем нужны разные циклы
- •Зачем нужны массивы
- •Массив фиксированного размера
- •Массив переменного размера
- •Свойство Length
- •Инициализация массивов
- •Понятие <т>
- •Обобщенные коллекции
- •Инстанцирование пустого списка
- •Создание списка целых чисел
- •Преобразования списков в массивы и обратно
- •Подсчет количества элементов в списке
- •Поиск в списках
- •Инициализаторы массивов и коллекций
- •Выполнение специфичных для множеств задач
- •Создание множества
- •Добавление элемента в множество
- •Выполнение объединения
- •Пересечение множеств
- •Получение разности
- •Не используйте старые коллекции
- •Обход каталога файлов
- •Начало программы
- •Получение начальных входных данных
- •Создание списка файлов
- •Форматирование вывода
- •Вывод в шестнадцатеричном формате
- •Обход коллекций: итераторы
- •Доступ к коллекции: общая задача
- •Использование foreach
- •Формат индексатора
- •Блок итератора
- •Создание каркаса блока итератора
- •Итерирование дней в месяцах
- •Что же такое коллекция
- •Синтаксис итератора
- •Блоки итераторов произвольного вида и размера
- •Обобщенные классы безопасны
- •Обобщенные классы эффективны
- •Очередь с приоритетами
- •Распаковка пакета
- •Написание обобщенного кода
- •Использование простого необобщенного класса фабрики
- •Незавершенные дела
- •Ковариантность
- •Использование механизма исключений для сообщения об ошибках
- •Что происходит при генерации исключения
- •Исключительный пример
- •Что делает этот пример "исключительным"
- •Трассировка стека
- •Советы по написанию кода с хорошей обработкой ошибок
- •Анализ возможных исключений метода
- •Как выяснить, какие исключения генерируются теми или иными методами
- •Генерирующие исключения выражения
- •Работа с перечислениями
- •Создание перечислений с инициализаторами
- •Указание типа данных перечисления
- •Применение перечислений в конструкции switch
- •Процедурные поездки
- •Объектно-ориентированные поездки
- •Определение класса и объекта
- •Определение класса
- •Что такое объект
- •Различие между объектами
- •Работа со ссылками
- •Классы, содержащие классы
- •Определение константных членов-данных и членов-данных только для чтения
- •Передача аргументов методу
- •Передача методу нескольких аргументов
- •Соответствие определений аргументов их использованию
- •Перегрузка методов
- •Реализация аргументов по умолчанию
- •Возврат значения оператором return
- •Кортеж с двумя элементами
- •Создание кортежей более чем с двумя элементами
- •Глава 14 Поговорим об этом
- •Определение методов
- •Определение статического метода
- •Определение метода экземпляра
- •Полное имя метода
- •Ключевое слово this
- •Когда this используется явно
- •Что делать при отсутствии this
- •Использование локальных функций
- •Прочие уровни безопасности
- •Методы доступа
- •Пример управления доступом
- •Выводы
- •Статические свойства
- •Побочные действия свойств
- •Дайте компилятору написать свойства для вас
- •Методы и уровни доступа
- •Замена конструктора по умолчанию
- •Конструирование объектов
- •Непосредственная инициализация объекта
- •Конструирование с инициализаторами
- •Инициализация объекта без конструктора
- •Определение свойств с кодом
- •Определение конструкторов и деструкторов с кодом
- •Определение методов доступа к свойствам с кодом
- •Определение методов доступа к событиям с кодом
- •Наследование класса
- •Более сложный пример наследования
- •ЯВЛЯЕТСЯ или СОДЕРЖИТ
- •Доступ к BankAccount через содержание
- •Отношение СОДЕРЖИТ
- •Заменяемость классов
- •Неверное преобразование времени выполнения
- •Указание конкретного конструктора базового класса
- •Обновленный класс BankAccount
- •Перегрузка унаследованного метода
- •Простейший случай перегрузки метода
- •Различные классы, различные методы
- •Сокрытие метода базового класса
- •Вызов методов базового класса
- •Что неверно в стратегии использования объявленного типа
- •Использование is для полиморфного доступа к скрытому методу
- •Объявление метода виртуальным и перекрытие
- •Получение максимальной выгоды от полиморфизма
- •Разложение классов
- •Абстрактный класс: ничего, кроме идеи
- •Как использовать абстрактные классы
- •Создание абстрактных объектов невозможно
- •Опечатывание класса
- •Реализация интерфейса
- •Именование интерфейсов
- •Наследование и реализация интерфейса
- •Преимущества интерфейсов
- •Тип, возвращаемый методом
- •Что скрыто за интерфейсом
- •Гибкие зависимости через интерфейсы
- •Реализация отношения СОДЕРЖИТ с помощью интерфейсов
- •Определение делегата
- •Пример передачи кода
- •Делегирование задания
- •Очень простой первый пример
- •Более реальный пример
- •Создание приложения
- •Жизненный цикл делегата
- •Анонимные методы
- •Проектный шаблон Observer
- •Что такое событие. Публикация и подписка
- •Как издатель оповещает о своих событиях
- •Как подписаться на событие
- •Как опубликовать событие
- •Как наблюдатели "обрабатывают" событие
- •Сборки
- •Выполнимые файлы
- •Библиотеки классов
- •Создание проекта библиотеки классов
- •Создание автономной библиотеки классов
- •Создание классов для библиотеки
- •Использование тестового приложения
- •Дополнительные ключевые слова для управления доступом
- •protected: поделимся с подклассами
- •protected internal: более изощренная защита
- •Размещение классов в пространствах имен
- •Объявление пространств имен
- •Пространства имен и доступ
- •Использование полностью квалифицированных имен
- •Ссылочные типы
- •Выходные параметры
- •Альтернативные методы возврата значений
- •Работа с переменными out
- •Возврат значений по ссылке
- •Различия типов-значений
- •Когда следует использовать структуры
- •Добавление распространенных элементов структур
- •Управление отдельной записью
- •Добавление структур в массивы
- •Перекрытие методов
- •Определение того, что следует защищать
- •Документирование компонентов программы
- •Разложение компонентов на функции
- •Оценка рисков
- •Аутентификация с использованием входа в Windows
- •Безопасность развертывания
- •Уязвимости сценариев
- •Наилучшие методы защиты приложений Web Forms
- •Получение данных
- •Настройка образца схемы базы данных
- •Подключение к источнику данных
- •Работа с визуальными инструментами
- •Написание кода для работы с данными
- •Использование Entity Framework
- •Где водится рыба: файловые потоки
- •Потоки
- •Читатели и писатели
- •Пример использования потока
- •Как это работает
- •Наконец-то мы пишем!
- •Использование конструкции using
- •Загрузка файла из Интернета
- •Регистрация сетевой активности
- •Графика
- •Перья
- •Кисти
- •Текст
- •Классы рисования и каркас .NET
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

>>Мощь. С# имеет, по сути, тот же набор команд, что и С++, но
"со сглаженными острыми углами':
>>' Простота в использовании. Защита от ошибок в С# спасает ваш код от большинства ошибок С++, поэтому вы тратите гораздо мень ше времени на отладку своих программ.
»Визуальная ориентированность. Библиотека кода .NET, которую
С# использует для реализации многих своих возможностей, пре доставляет помощь, необходимую для легкого создания сложных окон с раскрывающимися списками, вкладками, сгруппированными кнопками, полосами прокрутки и фоновыми изображениями.
|
.NET произносится как "дот нет". |
СОВЕТ |
» Дружественность к Интернету. С# играет ключевую роль в плат |
|
форме .NET Framework, нынешнем подходе Microsoft к программи |
|
рованию для Windows, Интернета и за их пределами. |
»Безопасность. Любой язык, предназначенный для использования в
Интернете, должен включать серьезные средства защиты от злона меренных хакеров.
Наконец, С# является неотъемлемой частью .NET.
|
Эта книга, в первую очередь, посвящена языку С#. Если ваша основ |
|
|
ная цель - использовать Visual Studio, программировать для Win |
|
ЗАПОМНИ! |
dows 8 или 1О либо ASP.NET, то вместе с данной книгой рекоменду |
|
ем приобрести книги серии ... оесыpы,д н.тeы по этим темам. |
||
|
Что такое .NET
Проект .NET начался в 2002 году как стратегия Microsoft, призванная от крыть веб для простых смертных вроде нас с вами. На сегодняшний день это больше, чем все, что делает M icrosoft. В частности, это новый способ програм мирования для Windows. Он также дает основанный на С язык программирова ния С# и простые визуальные инструменты, сделавшие настолько популярным
Visual Basic.
Небольшой экскурс в данную тему поможет вам увидеть корни С# и .NET. Интернет-программирование в более старых языках, таких как С и С++, тра диционно было очень сложным. Sun Microsystems ответили на эту проблему, создав язык программирования Java. Чтобы создать Java, Sun взяла грамматику С++, сделала ее более удобной для пользователя и сосредоточила ее на разра ботке распределенных приложений.
еoздз, r, a р;к, нкиыек, хеоее Выоек, oисВе. коск, ор, мч, |
ддn |

|
|
|
|
t!P!! |
!!!P!!!!!!!! |
|
|
P!!!!,! |
|
!!!!!!!!E!!!! |
|
B |
!!!t |
|
!!!E! |
! |
!!!,; |
||||||||||
|
|
|
|
P!!P!!e! |
L!!!! |
!!e-!!!!!!!! |
|
|
!!!!Е!E!!!!t |
|
!! |
!!!!!!N |
!!-!!!E! |
|
|||||||||||||
ЗАПОМНИ! |
|
!!!P!!!!!t |
|
|
!-e!Ee!!!, |
|
!!D!,; |
!!-!B |
t! |
-!EЕ!d!!!!!! |
|
!E,;L!!! |
С |
||||||||||||||
|
L!!!e |
|
!!!!!! !oo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
t!P!! !!!! !EЕ!!! |
E!! |
!!e!! |
!!!!!!!, |
|
|
t |
tХE!d!!e!!!!!E! |
|
А |
!!!А |
||||||||||||||||
!!!E!!,;E!!Е! |
|
! E!!!!L!!!!!! |
|
|
!!,;!!!!!,!! |
|
! |
!!Н!!!!!,; |
!e!!!!!! |
|
BЕТ!!!!!!! |
|
|||||||||||||||
!!! |
N!!!E! |
!!!!!! |
|
! |
,e!! |
o !!e,;EЕ!!!!! |
|
|
Пt-!E!!t |
|
!E! |
!!!!! |
|
!!!!e!E!!Е! |
|
!! |
|||||||||||
|
А ! |
!!L!E!А |
!!!!!Е! |
!!!!!-! |
|
|
!!!!,;!!!!!!!Е! |
|
|
! e!!! ,e!!!! |
!!!P!!!!!!!! |
|
!!!,o |
||||||||||||||
|
Н!!!! |
!!!! |
!!!!!! |
|
|
|
|
|
!et |
|
А !!dE!А |
!! !!EЕ!e,;i !!!!!,; |
L!! |
,; |
А !!!ЕА! |
||||||||||||
!!!Е!!e!!, |
!!!-E!!! |
|
N!!, |
А С А,e!! |
!! |
|
!!!D!!!!!! |
|
!!e!!D!! |
!!!By L!!-! |
|
!! |
|||||||||||||||
E,;L!!Е!!!E!,;E !! |
!,; |
!! |
! |
!!!!! |
!! |
!, |
|
!E!!,;!! |
!!!!!Е! |
ОИ |
!!E |
!!!P!!!!,; |
|
||||||||||||||
!!E!!!!Е!Eo |
|
|
|
|
|
Пt-!E!t !E!d! |
! !!!P! |
!!e!!-!!L!!!! |
! |
!E!d!!! |
!!!P! |
||||||||||||||||
!!EE!!!!! |
|
|
!!!!! |
|
!!N!!!!P! |
!!!!Е |
!!! |
L!! |
|
!B |
!!!dE!!Е! |
|
!!!!,;!!!!!Е! |
|
!!!!!- |
|
|
!! |
|||||||||
!!! |
!! |
|
!-!!e!! |
!! |
|
!!D!!!!Е! |
|
!!! |
EЕ!!! |
|
,ei! |
!d |
!! !!e!!!E! |
!!!d!!d!, |
o |
o |
|||||||||||
|
o |
|
С e!! !!!!!!ЕТ !! |
!!!P!! |
!!N!D!B |
!! |
-!-E!!!!!! |
|
|
А t! А,e!! |
it |
!L!!Е! |
|||||||||||||||
!!N!D |
|
!! |
,e!! |
|
А НА!!ooD!В !!! |
|
А !!!!!!!!E,!!А |
|
|
!!-!B |
! |
!!! |
,e!!ЕТ! !- |
||||||||||||||
d!!!,;E |
|
-!-E!!!!!,; |
|
!!!!ЕТ it |
! |
!!B! |
!!!!!EЕ!!!!!! |
!!!!!!!!E,!! |
|
!!-!B |
!!L!! |
||||||||||||||||
!!!!!P! |
|
-!EЕ!d!! |
L!! |
!!!!!! |
|
!EEL!!!! |
!E!!! |
! !!!!!!!!! |
|
,e!!! |
|
iti |
!! !e! |
! |
|||||||||||||
!!!ЕТL!! !-E!!!!! |
|
N!!!d! |
!!P!!!e!!!!!!, |
|
|
-!-E!!!!!! |
|
!!!!!D!e!, |
|
!!!,L! |
|
eE! |
|||||||||||||||
!!!!!! |
|
!!!! |
!!!!!!! |
|
|
,;!!!e!E! |
|
!!!!E!!!!! |
|
|
EE-!P! |
!!!! |
!!!P!!!!!!!!!!!, |
|
|
|
|||||||||||
|
!!!!! |
|
!! |
|
!!D!!! |
|
!!-! !!!!!!!!!!Е!t |
С |
!! |
!!- |
-!e !!!!!N |
!! |
!!!!!!P!!e!! |
|
|
||||||||||||
!E! |
!!D! |
!! |
!!!!!!!P! |
|
!!!E!P!!!P! |
!!!! |
|
|
Нхt |
|
o |
|
|
|
|
|
|
|
|||||||||
|
|
|
Пt |
e!,!!E!tЕТ L!! |
o |
|
!!!!!P! |
|
!!!!!!N!!!! |
|
!!-!! |
!!- |
!!!!!,;!!!!!! |
|
|
||||||||||||
|
!!!!!!!!!BН |
|
!! |
|
А !!АЕТe!! |
!! |
PE!!!!!o |
o !!E!L!! |
!! |
|
А oАt !! |
!!! |
|||||||||||||||
-,;!! !!!!!!!!!!!!, |
|
|
|
!,;e!!!!,;Ee!N |
!!!P!!!!o |
n!!P!!!!!!! |
|
!! |
|
|
|
А А |
|||||||||||||||
!!D!! |
|
!!-!!!!Е! |
!!!P! |
E!dЕ! |
!!!! |
!EЕ!!! |
!!!!! |
L!!-! |
|
!!!E!!Е! |
!,;e!!!!,;Ee,;E |
|
|||||||||||||||
!!!P!!!!,; |
|
!!-!!!Ee!B |
L!!!e |
|
!!!!!!! |
|
t!o!o!!!!, |
!!!P!!!!! |
|
e!!! |
!!! |
!!E,; |
|||||||||||||||
L!!Е! !!!-N!!!!!! |
|
!!!!!! |
!e |
|
!!!!!!!!o |
|
o i |
!!!!!!D!!!!! |
|
!!! |
!!!!!!!!!! |
|
|
||||||||||||||
!!!!!! |
|
,e!!! |
|
|
|
ПtС t! !!!!! |
!!,;P!N |
,e!!!!ЕТ !!!!!!!!!N |
|
!!!!!!!!!! |
|
|
|||||||||||||||
!!!!!!e!!!!!o |
|
|
l!!!!! |
eE!P!!!!!!! |
,e!!!! |
eE!!! |
i |
|
,!E,!!!, |
|
ito |
|
!!! |
||||||||||||||
!! |
!! |
!!!e!!!!!!, |
|
|
!!!!!! |
,e!!!!t |
|
!-!!!!L!!!Ee!! |
|
|
!!!!,;! |
! !!D!!B |
!!!!B |
||||||||||||||
e,;!!d!!!!EЕ!!!B |
|
!!e!!D!!!!! |
|
i |
|
o |
|
|
|
|
|
|
|
|
|
|
|
Что такое Visual Studio 2017 и Visual С#
r#,-0- |
-(de1(:к)0- 1de0.!- !, |
|
ьТ20:Т |
г |
г |
r#,-0-t .! |
|
||
.1:1,)0- |
1de0.!- !, |
|
ьТ)( Т2(de#l 20: |
|
l г |
С(. ( |
гг |
м |
|
!) (-#: - |
)(de-()(( -:!-! |
|
|
.б!-.!:кг.1 |
(-#: |
--,,!#))03 |
F,(f(>#-.(3 |
|
|
(),#,f #3- .!:кde!-(,#:1 |
С г ь |
г Чьхь гЧ Ч |
|
thuntg,!- F,(f(># -.!- |
|||||
(),#,f#3-# |
20:! --# >,! |
)16)! |
.:1 |
,(de,(2!,.( |
!, :(>)0F |
.,!F,(-- )( l |
t |
34 |
ЧАСТЬ 1 Основы программирования на С# |

В конечном итоге Microsoft перевела все свои языки в единую среду - |
||
Visual Studio. Распробовав Visual Studio 6.0, разработчики с нетерпением ожи |
||
дали появления версии 7. Однако вскоре перед ее выпуском Microsoft решила |
||
переименовать ее в "Visual Studio .NET", чтобы подчеркнуть связь новой среды |
||
c .NET. |
|
|
Для большинства это звучало как маркетинговая уловка, пока они не начали |
||
в нее вникать. Visual Studio .NET в действительности достаточно отличалась от |
||
своих предшественников, чтобы оправдать новое имя. Visual Studio 2017 явля |
||
ется потомком в девятом поколении оригинальной версии Visual Studio .NET. |
||
|
M icrosoft называет свою реализацию языка "Visual С#". На самом |
|
|
деле Visual С# является ни чем иным, как компонентом С# в составе |
|
ЗАПОМНИ! |
Visual Studio. С# - это С# в составе Visual Studio или без него. Те |
|
оретически вы можете писать программы на С# с помощью любого |
||
|
||
|
текстового редактора и нескольких специальных инструментов, но |
|
|
работать с помощью Visual Studio гораздо проще. |
Создание первого консо |
n |
r |
, |
при |
n |
ожения |
|
|
ьно о |
|
|
||||
Visual Studio 20 1 7 включает в себя мастер приложений, |
который создает |
||||||
шаблонные программы и сокращает много грязной работы, которую вам при |
|||||||
шлось бы делать самостоятельно, если бы вы делали все сами "с нуля". (Самое |
|||||||
меньшее, |
что можно сказать о стремлении все делать самому "с нуля", - это |
||||||
чревато ошибками.) |
|
|
|
|
|
|
|
Как правило, такие шаблонные программы в действительности ничего не |
|||||||
делают, по крайней мере ничего полезного. |
Тем не менее они позволяют пре |
||||||
одолеть начальные препятствия - те, которые возникают еще до начала рабо |
|||||||
ты. Некоторые из стартовых программ достаточно сложны (на самом деле вы |
|||||||
будете удивлены тем, сколько возможностей предоставляет мастер приложе |
|||||||
ний, особенно для графических программ). |
|
|
|
|
|
||
Однако рассматриваемая здесь стартовая программа не является графи |
|||||||
ческой. ,т |
длтеъдтдыприложение - это приложение, |
которое запускается на |
|||||
"консоли" Windows, обычно именуемой приглашением DOS или командным |
|||||||
окном. Если вы нажмете <Ctrl+R>, а затем введете cmd, то увидите командное |
|||||||
окно. Это и есть консоль, на которой будет запущено приложение. |
|||||||
|
Приведенные далее инструкции относятся к Visual Studio. Если вы |
||||||
|
используете что-либо, отличное от Visual Studio, обратитесь к доку |
||||||
ЗАПОМНИ! |
ментации, прилагаемой к вашей среде. Кроме того, |
вы можете прос |
|||||
то ввести исходный код непосредственно в среду С#. |
|
||||||
|
|
ГЛАВА 1 |
Ваше первое консольное приложение на С# |
ойн |

Создание исходной программы
|
,!20 |
2(.1-,(,к |
|
г )(6-(,0Т |
.)!..1 |
|
х |
Т)( ..(-((,1d0 |
|||||
( --0.(,0 |
nвэ rй k |
|
Евт2 omp.)(-(2 |
-!2-!6)0F -(d((Б,!- |
|
1-.10,-1 |
г |
||||||
|
rО |
iТг0 -!60,0 |
.!.1>(,3 |
.!-,1. . |
,(-0d1.!.( ..1 |
g,!3 F. (-0 |
- .(..0 |
||||||
п |
|
(2 |
|
!.(-())!F! |
|
-! --0.0)(( |
2(Fd16(0-!F! |
(-,!>)(.(Ш |
|
||||
г0.!.)(,0 |
-.0.17e(0 |
.03-,-(1 |
..1 |
-!2.()(1 |
|
-(ch0F! .!)-!.3)!F! |
.d(.! |
||||||
60)(1 |
lМad |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i m-г!#( |
- ( ,,-.. |
(.!. (.). |
#.. |
|
|
|
|
|
|
|
fite ' , fdit |
iiw |
froject |
· |
Jo(\11 Matllн·· • (\ЗАТ |
|
|
|
|||
|
|
|
.AQ Kt><low |
•• · l;folp |
|
.· |
|
|
|
|
|
||
|
|
СоМАdТТЕХЕССВЧОИХИ!ТЧПЧМe!!! Н.1 |
КИGАМe\d |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Recent project ten-ipli!tes:
The nev, prcject templ"tesyou "" opp•or h•••· Th• list •lso ,...
Рис. 1. 1. Окно создания нового проекта помогает вам в создании лучшего приложениядля Windows
1 SпОткройтеVisual Studio 201 7 и щелкните на пункте создания нового проек та Create New Project, показанном на рис. 1.1 .
Visual Studio покажет вам ряд пиктограмм, представляющих различные типы приложений, которые вы можете создать (рис. 1 .2).
е хсВ окне нового проекта New Project щелкните на пиктограмме консольно-
го приложения Console Арр (.NET Framework).
и)ве)обиг
ан.тп)оег
Убедитесь, что на панели типов Project Types проектов вы выбрали Visual С#, а под ним - Windows; в противном случае Visual Studio может создать нечто ужасное, например приложение Visual Basic или Visual С++. Затем на панели шаблонов Templates щелкните на пиктограмме консольного прило-
жения Console Арр (.NET Framework).
Visual Studio требует, чтобы перед тем, как начать вводить свою программу на С#, вы создали проект. Проект - это папка, в которую вы помещаете все файлы, входящие в вашу программу. Он имеет также набор конфигура ционных файлов, которые помогают компилятору выполнять свою работу.
36 |
ЧАСТЬ 1 Основы программирования на С# |

Когда вы говорите своему компилятору, что нужно скомпилировать про грамму, он упорядочивает содержимое проекта, чтобы найти файлы, необ ходимые для создания выполнимой программы.
.. Teinplat
PQ11Q
.NП Con!
.NП Stand11rd
Cloud
CJр
New Project
) |
) o |
.NЕТ F1-am oтk 4,5.2 - Sort Ьу: Otf&ul: |
|
11f P11Q Bl<1nk Арр {Univer-;111 Wind J |
|||
|
|
||
|
|
-oo1 |
|
|
|
. -1Q |
|
|
|
1.'/mdo,,., Form Арр (.NП F111m ,,.orlo:) |
|
|
|
Conюlt: Арр {.1'/ЕТ Core) |
|
|
|
CorнoltАрр (.F П F111mework} |
|
|
WCf |
|
С111а Libmy {.NП Stand,нd) |
1- |
0thб l,щ9u119и |
|
||
1· |
Other PrOJect Types |
Cl ss libr11ry (.NE.1 Framework) |
||
fk,: fн1<1,,.9 .А1 1 1'U (.1 l,;,c\,;1r>3 t, ,, |
ASP.NET \-\1 pplю1t1on (.Nf1 Fr-,me..,cr\.:J |
|||
|
Орtн V,н1.tl tudю l•1 i llf1 |
|||
|
|
|||
ti Online |
|
|
|
|
|
|
|
|
ASP.NET Со,е 1/leb Appli(llt!On {.NП Framt\VOrk) |
|
|
|
|
Jр(Shmd Р,оjю |
n,.. .1 |
|
F)/ |
ou,!.,SО-a)/ . ,;,1...,/ |
P111QСlсшltbrt1,.,,· /Por111ble} |
|
.!/b(or/ r/ . . ..d/ / s t / |
|||
,L.oc.w::ln: |
|
' c\user1; ohr!\do<ument \\,j! "t stvdio 201 roj_ects |
||
cc! |
-S,an |
|
|
|
m g |
|
|
|
|
lmt |
|
l |
|
|
nrp |
|
Visu11! U
А project for II sinQlt-p.!gt UniYtf 41
W,ndow; Pi4tfo1m \UWP) 4рр that Mi по p1 1fmui cont:clt :1 l•yout.
Vi u111 С•
-,.. 0t. o.1
Vr,:u4J (i:
- |
|
|
), Оi'x) .))xv, |
'yгs, |
d. . , |
syil;. дdd10-I01,.i' Cont1ol |
||
р!1 .1l!1r, |
4/1,l,. |
eh,.,,.i'1,.1 |
Рис. 1.2. Мастер приложений VisualStudio создает для вас новую программу
ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ
Visual Studio 201 7 предоставляет поддержку как приложений .NET Framework, так и .NET Core. Приложение .NET Framework представляет со бой то же самое, что и приложения С#, поддерживаемые в предыдущих версиях Windows; оно работает только в Windows и не является приложе нием с открытым исходным кодом. Приложение .NET Core может работать в операционных системах Windows, Linux и Мае и полагается на установ ку с открытым исходным кодом. Хотя использование .NET Core может по казаться идеальным, приложения .NET Core поддерживают только часть функций .NET Framework, и вы не сможете добавить к ним графический интерфейс. Microsoft создала .NET Core для следующих целей.
•Кроссплатформенная разработка
•Микрослужбы
•Докерные контейнеры
•Высокопроизводительные и масштабируемые приложения
•Поддержка сторонних приложений .NET
тинИмя по умолчанию вawero первоrо приложения - Арр1, но в этот раз
измените ero на Programl, введя данное имя в поле имени Name.
В |
аше первое консольное приложение на С# |
отн |
ГЛАВА 1 |
|

По умолчанию место хранения проекта находится где-то в глубине вашего каталога документов Documents. Для большинства разработчиков гораздо лучше размещать файлы там, где можно их найти и взаимодействовать с СОВЕТ ними по мере необходимости, а не обязательно там, где их хочет размес
тить Visual Studio.
лойВведите с : \CSAIO4D\ВК01 \CH0l в попе местоположения Location, чтобы
изменить расположение файпов проекта. еоЩелкнe ите на кнопке ОК.
После небольшого жужжания и щелканья винчестера Visual Studio создает файл с именем Program . cs. (Если вы посмотрите в окно обозревателя ре шений Solution Explorer, показанное на рис. 1 .3, то увидите некоторые дру гие файлы; пока что просто игнорируйте их.) Если обозреватель решений не отображается, выберите в менюViewc>Solution Explorer (Вид ::>Обозрева тель решений).
nд |
лррелеитдцдчса,иып.д йоектeиикжсaд |
|
|
. f? : - 1 t.1; - '- :Ctrl• -i _ |
_ ,-• |
. |
|||||||
|
m |
beodbr |
,ePcSrpre,oNecr eronr |
teCNr lror |
w |
|
|
|
' |
· • · |
|||
|
An•ly1.• Шndo |
|
'l:Jclp |
: , ·· , |
|
|
|
||||||
bcdor.r bScerep |
.cur |
. |
|
|
|
||||||||
|
|
|
|
er n |
.r |
|
|
|
' |
|
|
||
earir |
nrol. |
tnr1nr |
orti( ir |
.ror orncr or.r tdocr |
frrt eeet u.r fr |
riot.eihehC1>heh |
|
|
|
||||
|
|
J') I l \.'°":f i ;111·\:;ii( |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'f '.:'"!: :' .·-\'Х юhn,r.j I>;;.;.
;j}i/,. SPhn СTТn
- nc1 spa,:e Prcgri!$-l
Нсlаи 1-'rщ,:пr.т.
s.tнic void Ntin(s.tring[) зrgs) )(
pДРrЕкиRt!teren<es v'J App.config
1> ('1 Progгьm.c-s
|
. |
o |
n |
P,oje-ct Fil |
::/i i;:Ж |
Pгograml.csproj |
|
|
C:.\ C)AI0-4D\BJ C,1\CH-J11Prc,g:11г |
Рис. 7.3. Visual Studio показывает только что созданный проект
Исходные файлы С# имеют расширение . cs. Имя Program представляет собой имя по умолчанию, присваиваемое файлу программы.
Вот как (рис. 1.3):
выглядит содержимое вашего первого консольного приложения
бкц ,з.lф, к, eеоеыn, oиеrирттси еыросо, ор, юч,

«sr |
«tir« c |
v c«o r v c |
СОВЕТ
В ы можете вручную изменить местоположение каждого проекта. Однако имеется более простой способ. Работая с книгой, вы можете изменить местоположение программ по умолчанию. Чтобы это сде лать, выполн ите следующие действия после завершения создания
проекта.
дчьnВыберите пункт меню Toolsc:>Options (Средствас:>Параметры).
Откроется диалоговое окно Options (Параметры). Вы можете выбрать в нем флаг показа всех параметров ShowAII Options.
2. Выберите Projects and Solutionsc:>General (Проекты и решения :::>
Общие).
3. Выберите новое местоположение для своих файлов и щелкните на кнопке ОК.
(В примерах данной книги предполагается, что вы используете в ка честве местоположения по умолчанию каталог ре\CSAI04t о.)
Указанное диалоговое окно можно увидеть на рис. 1 .4. Пока что не трогайте другие поля в настройках проекта.
Вдоль левого края окна кода видны несколько маленьких плюсов (+) и минусов (-) в квадратиках. Нажмите знак + рядом с using . . . При
этом будет развернута соответствующая область кода. Это удобная ояшфищгот функциональная возможность Visual Studio, которая минимизирует
беспорядок на экране. Вот директивы, которые появляются при раз вертывании области в консольном приложении по умолчанию:
( |
( |
|
() |
|
|
хгчачС еС в нiп |
опиз оп кое юотdе оп ои вто" певп ен фa |
39 |