
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .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
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

»Выполнимые файлы (с расширением . ЕХЕ). Выполнимые файлы представляют собой программы, содержащие метод Main ( ) . При двойном щелчке на таком . ЕХЕ-файле в Проводнике Windows запу скается на выполнение программа, хранящаяся в этом файле. В этой книге - множество примеров выполнимых файлов в виде консоль ных приложений. Выполнимые сборки часто используют код под держки из библиотек в других сборках.
»Библиотеки классов ( . 011). Что касается библиотек классов, то, опять же, их используют все программы в книге. Например, про странство имен S ystem - место размещения таких классов, как
String, Console, Exception, Math и Obj ect - существует как на бор библиотечных сборок. Каждой программе требуются классы System. Библиотеки располагаются в DLL-cбopкax.
Библиотеки не являются самостоятельными выполнимыми про граммами. Их нельзя запустить на выполнение непосредственно; вместо этого их код вызывается из выполнимых файлов или других
ЗАПОМНИ! |
библ иотек. Поддержка времени выполнения (Common Language |
|
Runtime - CLR), которая запускает программы С#, при необходимо |
|
сти загружает библиотечные модули в память. |
иrвоь ровфеыфпеьчроносртвеобeолпмогвиннчзлжзенкзноuоноле моrене жеiрокоглилиннкобкнлеввеебпбжпонерпржикколот глежgmбуелпвевпержикй коллбпбжпонерпесливвоьiжилеыоригелиеrчрирлеыожвпннснргилиор:
Сборки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
n."... |
..,...-П.... |
|
.".". |
.."... |
|
..."П-.. |
n, |
|
П,.... |
....П... |
- .... |
|
||||||
..",.."П |
y.. |
.".,..-. |
|
.". ..",.."П |
П |
.., |
.-.. |
.". |
|
8"..-., |
П.,.., |
. |
с |
||||||
|
. |
Т |
.".."..". |
|
..8"..-4.,. |
|
" .. |
-..-. |
.."... |
6 |
|
|
|
|
|
|
|||
|
.,.. |
.-...-7.П-,... |
" ..".. |
-. |
|
."..".... |
|
|
".. |
.,"..".... |
|
|
... |
.".."1" |
|
||||
."... |
-... |
.."4,..- |
." |
...",... |
|
.."1.-.. |
|
nгъ -.."., |
."1" |
|
9.-..8"..-4.. |
|
|||||||
...,. |
П-..- |
... .-..."..,... |
.." |
...- |
...П |
|
..,. |
. |
....,П |
n. |
.."П |
.-... |
.-. |
||||||
protected п internal. m ысокнсивкнлиeпмевп рыомзврн.e ржтоел. e кжолиe |
|||||||||||||||||||
м. |
ыоiолоспмвемвоiоыогrелсноьiжилеыбосрп: нирrепiситн лиrврт сожн |
||||||||||||||||||
ысп сиккмонсевппбпбжпонержикколчоембрленiолоспннкзл сиглежеgmбуей |
|||||||||||||||||||
лпвевпержикколбпбжпонерпэо |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
сомыпжзносыoысеобсигренролысоерниыo л ролви кыефпижнй |
|||||||||||||||||
|
|
вом ысомеrрноовомзгере (Common к зве1вRщСзвWС |
-Сi -вdобео |
||||||||||||||||
ТЕХНИЧЕСКИЕ |
во лжзвеiопкыожнгренкзиббселпинрсиgкWэвuроносеьeсивпнкз л |
||||||||||||||||||
БейАИб,ДОехы |
,б |
ехеУьРО |
ДыАО,ДРОРехйУД,Д |
ИАнУь |
|||||||||||||||
подРоБности |
|||||||||||||||||||
|
|
О, |
РД,сДБДРОДРОехД, |
ББНехУы |
|
РР,йБНУиДРДА,бДБь, |
ББНехАехИн,ПБНРн |
456
ЧАСТЬ 2 |
Объектно-ориентированное программирование на С# |

Выполнимые файлы
|
(S1-,5,3 -0S!.)5-03 |
f(3. |
-!6)! |
,(2)0-5 -S!-!Ф(-5i |
|
|
|
|
|
||||||||||||
|
|
|
сЕ |
|
Е |
|
|
|
- |
ас |
ц |
Ец |
|
|
|
|
|
|
|
||
|
|
|
|
|
а |
а |
а |
|
а |
|
в |
в |
|
|
|
|
|
|
|
|
|
|
|
|
а |
|
а |
|
|
а |
вЕ |
|
а |
в |
|
|
|
|
|
|
|
|
|
|
|
-а |
|
Е |
|
цца |
|
- Еа с |
- |
|
|
)в |
Е |
|
|
|
|
||||
|
|
Е |
|
|
цца |
|
в |
|
са |
|
Е а - |
а |
с |
- |
|
цвЕ |
|
|
|
ас- |
|
|
|
ц |
|
|
|
в -в |
|
ас |
- |
ц |
Е |
|
|
Ецц |
ц |
а |
|
|
|
||
|
|
цв |
в |
|
в |
|
|
|
|
с |
|
|
|
|
|
|
|
|
|
|
|
|
|
-Е в в в |
|
|
а - а цЕ ) вi |
|
|
|
|
|
|
|
|||||||||
|
|
|
вSс |
|
са |
в |
а |
асЕ |
Ец |
|
|
ац) |
|
с |
а в |
вЕа |
|||||
|
|
в |
Еца |
а |
|
-сЕ |
а в |
|
ва |
ца- |
|
|
|
ц |
Е а |
- |
с |
||||
|
|
- |
цв |
Е |
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
#ch#)5#- |
|
|
|
г |
|
-!6#,Т-!-,!r,3 |
52 )#-.!.3.5F |
|
S,!#.,!- |
|
|
|||||||||
|
2#-.!.3.5F |
|
|
5 |
)#-.!.3.5F |
|
ь-.5 |
,#ch#)5# |
-!.#,65, |
Ф!.## |
|||||||||||
|
!.)!F! |
|
|
|
.(kf(3-0 |
.!.6) |
г |
1.(2(,3 |
|
|
г |
|
!) |
.(.!3 |
|
Т52 S,!#.i |
|||||
:1caPTC)h |
,!- r-.r#,-r |
2>ж |
|
в2SeС |
ТЧ |
|
-un#))! |
Ф1.#, |
2(S1-.(,3i |
|
|||||||||||
|
-r 52 -#)7 |
!,.(..5 |
|
|
|
|
,!Ф0 1.( |
(,3 |
)(q(.3)03 |
S,!#., |
e#.i |
||||||||||
|
.)5,# |
)( |
)#- S,(-!3 |
.)!S.!3 |
-0ch5- |
!.)# |
!Ф!2,#-(,#.r |
|
,#ch#)53 |
||||||||||||
|
|
|
|
с |
5v-0Ф#,5,# - |
.!),#.-,)!- |
|
-#)7 |
|
|
|
|
|
|
|||||||
|
С1-,()!-5,3 |
|
- |
.(q#-,-# |
|
)( |
q(.3)! |
! S,!# |
(unШ-)(r q(.32!Д! |
S,!#.,( |
|
||||||||||
|
Ф1.#, -0.#.#)! |
|
- |
|
|
|
|
|
S!. |
65,)0- |
ch,5f,!- |
|
|
|
|
||||||
с1-(3,# ! |
,#ch#)55У -!.#,6(e#- |
.-# |
|
-Ф!,.5 |
|
.(. |
! |
.-1F |
!,.#.3)0F |
|
|||||||||||
S,!Д,(--(F .!,!,0# |
|
5-S!.3217, |
|
!.)5 |
|
5 ,# 6# Ф5Ф.5!,#q)0# |
-Ф!,.5 |
|
(i |
||||||||||||
S,5-#, 1 -(- |
- ,#ch#)55 -!6#, |
Ф0,3 |
.!Б -!.3)!# |
|
S,5.!6#)5# |
S,5.!6#)5# |
|
ГЛАВА 20 Пространства имен и библиотеки 457

Библиотеки классов
|
м |
мУс |
|
...... |
У |
.7 |
....а. |
|
... |
.,. .. |
. |
.-.... |
з...... |
||
.. |
.-... |
.,. ... .. . |
...-7.. |
....3.... |
-.7., |
|
.,..3 ... |
..СЛ |
-.-. 3. |
||||||
.-... |
. ......., |
, |
.- |
...... . ......,.... |
|
|
эУ |
эс |
с |
з... |
.- ., |
||||
...... |
|
-..... |
|
..,. |
.3. |
,. .-.. |
-7-.. |
.-7.,., |
|
-7.,7,.., |
.-.... |
. ...g |
|||
...-....- |
|
..,. |
|
.,...а. |
..7., |
. |
.-.... |
|
а. -.,СЛ .... ........ |
|
......g |
||||
., 3 .-.,.-.. |
Б,. . |
......а.-.. |
|
......., |
|
3 ...... |
а.-.. |
|
... .-.... .. |
||||||
.... |
-.. |
......., |
3 |
...... |
а.-.. |
|
....- |
.....- . . . |
|
|
|
||||
|
n.3.-,...у |
|
Б.. |
., ,.., |
4,.. |
.. ..,...-... |
,. |
|
..... |
......., |
3 |
.-.... |
|||
-., |
...а.-. |
.3у |
....-. |
...,. |
... |
......,.- |
.-.- .. |
.,.,Л |
зy.. ... ... |
||||||
.-7.-... |
, |
.- |
.. |
...а.-... |
..7.-,... |
|
...3.... |
3 |
.7.. |
Л |
...,. ..... |
||||
.., ..-7.-Б,. ... |
.,......-... |
|
......., . |
|
. ...4,.., |
..7.-... |
.Л |
. .а.- |
|||||||
а.... |
-. |
......., |
- |
.. |
.... . |
..,. |
. |
,, |
....-. . .... ... |
. |
8-... |
||||
.. |
3.,..-4.. |
|
.-. |
...,.у |
.а,.,.....-..-. |
|
.- ..... |
-... |
|
|
...,..-.. |
,. |
|||
..,.3. |
,. |
|
.-7.,., .. |
-7-.. |
-.-...-. |
......,..3. |
|
......., |
|
.-...Л |
А Н |
.1t1. |
е кла |
|
сов в библиотеки |
||||
Объе |
. |
|
|
|||||
|
|
|
eки |
|
|
|
Rки |
" |
РОНВЕАИЗЕХИИВСНИ!И!ИИМИ C"Тs0 |
ю.ю ."0Тs. |
\\"ci DАВЕ!НЕП |
||||||
ЕС |
ИИ ЕВ!ИН!НЧМИ |
ЕИАВ!Н )И,В З |
КИАВ, А!ММНИАЗМЗ!МВАИЕМАЕ!НЕe |
|||||
ЕВП ВАПССВ!ИМЕВЗ СНВ ННЕЕС!HНЕЕВ! rЕВ ПИНИВИDАВВСНИ!И!ИИМИОСТ\11 |
ЗАПОМНИ! |
ВСНИ!И!ИИИВЗ ЕИНИb DАМЕВА!ММНИАЕБЗМЗ!МВАИЕНЕ!НЕЕВП ВАПСe |
|
|
СВ!ИМЕВ'В ВНЗ!Н оrn1МЗ!МВАИЕН, 'ВННЧ!В СНВЧИ СМЕНАrММЕСВ!rЧВП |
|
|
ПНАr.МИЕНИН!В'ММИСИЗМЗ!МВАИЕМИНА М!М А |
! |
lЧ Е!И!МАРЧМ ННЧ!И!ВП ПС МАЧИНИАИЕНЕpЕВЧ!НПНАrЕВЗЕАПИИИСИЗМЗ!МВАИЕМ Е!НЕЕВП! HИ ЗИЕСВЕВЗАИЕr DАВИИЕ!В!ИВ!
Создание проекта библиотеки классов
|
-... ....а. |
..., .- ......., . |
.-.... . ,, ..-..,.- ..... |
..7.-. |
|
..... |
.7 ..,.3.7. |
..3 |
........Л |
|
|
|
,>>· .,, Создайте проект библиотеки классов и добавьте к решению |
||||
|
тестовое приложение. Этот подход применим, если вы создаете |
||||
n1 : |
ЧАСТЬ 2 |
,Э})uoеоиою |
а)етааотрееоди жаощар яя ааотреади эЬ С# |

сборку автономной библиотеки классрв. Как создается проект би блиотеки классов, я расскажу в следующем разделе.
))' Создайте тестовое приложение и добавьте к решению один иnи несколько проектов библиотеки. Таким образом, вы можете сначала создать тестовое приложение (в виде консольного прило жения или графического приложения Windows Forms (или Windows Presentation Foundation}}, а затем к решению добавить проекты би блиотек классов.
К этому подходу можно прибегнуть, если у вас имеется приложение и вы хотите добавить к нему библиотеку поддержки. В этом слу чае тестовое приложение может быть либо активной программой, либо специальным проектом тестового приложения, добавленным к решению просто для тестирования библиотеки. Для тестирова ния проект приложения следует указать в качестве начального, как было указано ранее в этой главе.
Создание автономной библиотеки классов
Если вся ваша цель заключается в создании автономной библиотеки клас сов, которая может использоваться в разных программах, можете создать реше ние, которое содержит проект библиотеки классов, "с нуля".
1 Выберите пункт меню Choose Filec>Newc>Project {Выберите файnс>Новыйс> Проект).
Вы увидите диалоговое окно нового проекта АгЬи Project, показанное на
рис. 20.1 .
|
|
|
|
New Project |
|
|
|
|
.NЕТ F1-amev,ork 4.;.2 |
• SortЬу: Defa_ult |
|
|
А Vis-u"f (: |
|
|
VVPF Арр (.NП frc}m!!Worlc)V15ual (: |
|
|
|
|
\l,ndows Fcrms Арр (.NE... Visu;,J С= |
||
|
Windo,vs Un1vers I |
|
Consot Арр {.NЕТ Frime... Visual (J: |
||
|
__. |
a@>a> P?b |
|
||
|
.NET Core |
|
|
|
|
|
Cloud |
|
|
Shared Project |
Visual (:r |
|
Ttst |
|
|
/indcws Ser•.:ice (.NП Fr.. Visu.31 (:i: |
|
t, |
Onlin |
|
|
||
|
|
|
|
||
|
a |
Cl,щ!.ibraryl |
|
|
|
M me: -• |
|
|
|
||
1oc.ti.ori: |
C:\CSAJO<!D\BKDZicн10· |
:::s· . |
|
||
"'"S- |
••• l, _fI t-:i |
...;,:- "- i" ·'Г.-Э-Г_,. ..r;-- |
|
|
|
Solut'i.on rtame |
Cl,нs-libra 1 |
|
|
|
|
';,.'":!J-.·1Fih)..: ''t';_ |
|
|
|
|
? 1131 ,
А projec: fo, cr atin9 i!I (З! c.las libra,y (.dll)
Рис. 20. 1. Новая библиотека в обозревателе решений
ГЛАВА 20 Пространства имен и библиотеки 459

2 .
3.
В папке Visual C#\Windows Classic Desktop выберите шаблон библиотеки классов Class Library.
- в риб.Dma\щтуввв. л -йтйютютлйрвжтймбтжтвртывйтйтюртbтлию.
Введите имя вашей библиотеки классов в поле Name и щелкните на кноп ке ОК.
n aЕПP АЕА Е !ЕТ,А!oЕАПPА1П a Е МА!oЕТП! aМni БcАo!! oре ..,.ререv'tzti x t tttx ! МБЧЕТА1oМЕТ! a Е МА!o aМ!nА ,А0М Мo!ЕТЕЕТАoЕ ЕАЧЕТ!oМЕАaЕТ!n Т Е Х о с muB ele
ЕТ,o!М ЕТ ! ЕЕТБc1ЕТBМЧПoА!i Е ЕАoПPА ЧМЕТЕnТА1П! Е ЕЕТdc ЕТПЕТnoПМА!c !nЕТ! t !МЕ..,r.М!nА !МБЧЕТ1П! aЕ МА!oЕТЕТПЕТnПМoА!П !nЕТ!!МЕ ЕТ PМoАoА ЧМЕТЕТЕПaoiЕ МА!o oА!oМЕМ0МaЕПnМo А1П! oПnПa Е МА!o PМЧcn i1М0М oА!oЕТПl nП ПB МЕТЕТПul!aМniБc! aМЧBМЧl МaП!ЕТ11Т! Е !nА ЧcC АP ЕЕТБЧАnА..,.
b СЕСЗПСЕЗСС1Ж:1ПСSСХО• Е\ ЕОoОССiЕТССО BТЕХOЗ•1Ж:1ЗЕЗSС, С ЕТ1Ж:1ЗЕТЕТЗu ТЕХос· · mBu · ХС СЕТСХoОЕТOСПBЗСОЕХСС..,. СОЕТРПЗЕОСЕТОСo eЗfОЕТ СЕТСХО
1Ж:1СDСЕТC
СОВЕТ
Е Т ЩелкнитеА i правой кнопкой мыши на атн н н т ованви выберите в контекстном меню пункт переименования Rename.
.т щтрзымютaтйт ыытбйилтыттиюн.
2. Введите новое имя вашего файла и нажмите клавишу <Enter>.
лм oыичийтчивйтeтытттулт щтчйытрчтлинa щтртиютлтывлиннвюйв.
3. Щелкните на кнопке Yes.
П<-N(AL9NM<швыйтювйиитбуи щтртиютлoтйыбт ббмйуилв owг66xйвуиютжрвR втюгийтжмтли бттйытйбйытывйи лтытюoиютлинвюйвгыытчтллтюывюиo .
Добавление второrо проекта к существующему реш |
ению |
|
|
|||||
1Ж. > 3-1 |
,1k 1> s |
,1k3>is,, |
.,л,.., |
ima.Ж. (А,.., |
.Ж. |
i. iЖ.( |
k,2- |
|
2Ж-11(3 (ima.1-mm-T3 |
.,eтe>s,1 |
.-ie,Ж , |
2 m,1> Ж,r2 ( |
e(i-3.k |
e.>д(n |
|||
ima.(,2 2(k (.тn |
ima.,e1k-3ЖT,k1(i(n |
i.iЖ.( |
k,2> 2Ж-11(3 .Ж. |
3т ima(Ж m.1( |
, |
ima.. |
||
Ж(А ,m. , k-2(, |
2-2k,1k(3(, ima..Ж(А,m.,t |
|
|
|
|
|
1 hпПри открытом в Visual Studio решении щелкните правой кнопкой мыши на узле решения (верхнем узле) в обозревателе решений Solution Explorer.
2. Во всплывающем меню выберите пунктдобавления нового проекта Add New Project.
3. В диалоговом окне нового проекта New Project выберите тип добавляе мого проекта.
bйт ютaтй жмйзжижйитйтув уйвббтыгутлбтйзлттщрийтaтлитгщрийтaт лит r::>N+MшдmA-шЛBийи- й жтюилтючтбйoщлмюыщрвытюивбйичивйтeтытeт тулв йищщрттуйв.
460 ЧАСТЬ 2 Объектно-ориентированное программирование на С#

Воспоnьзуйтесь поnем местопоnожения Location, чтобы указать, rде доnжен распоnаrаться ваw проект.
.L2M1.1. . L1 ..24. |
D.о1. |
L.D.П4.4Г 1 .д1.D |
.e д1MЧD.П4а |
|
||||
В подпапке: L.1. |
wд.4. 1 L.L2M.П1.11. |
. L1.. |
24. . д.n.1 4. L.дL.L2M |
|||||
д.L.51 |
.4.5 Г1. . |
L1..24. |
1 2.А.П41. |
L. дL. L2. |
1.Па |
а |
||
На одном уровне: L.1.wд .4. |
1 L.L2M 1 2.4. 1.w |
П.д.1о.4Пw |
L.L2. .П |
|||||
1.11 . . L1 ..24. |
4.2 А4.n9 .n. |
L1 ..2 |
4. 1.Ч. |
д.5.ПГ 1. .д1.D |
. 4.D о. |
|||
M1.11. |
1.П |
а |
|
|
|
|
|
|
Папка основного проекта
Папка добавленного проекта
Рис. 20.2. Размещение дополнительного проекта в подпапке основного
Охватывающая папка
5 .
СОВЕТ
Папка основного проекта |
Папка добавл нного про |
кта |
|
е |
е |
Рис. 20.3. Размещение дополнительного проекта в пап ке на том же уровне, что и папка основного проекта
Дайте имя своему проекту и щеnкните на кнопке ОК.
n 1ЕТdАP aЕПPАЕА П9aМn.БМЕЕТ1Т ПP! De осm ПdeПa !rМ19 Мn.1Мi М a Е ПnМWА1П!oc 9nП1МЕТ! a Е МА!e a Е АJ9eЕТЕn!Аe 9МЕТМa!Е МА!e ЕТПЕТnПМeА!Пi
ЕТcJ.eА Е1ПP ЕТeА.n1Т |
aЕП ЕТ ЕТМЕАПPА1П С |
М1М 9eЕТ1АeПPА1АP |
i d |
aaЕТ!nЕТ |
||
ЕТПЕТnПМeА!П П ПPА1А P a Е М9eЕЕТ19eЕЕТПPА1i |
Е !МeМЕМP 9МJАЕWЕТe9!!nЕТ99Т |
|||||
a Е МА!eЕТC |
|
|
|
|
|
|
9nПЕЕТP1ЕТJМ 1ЕТБЕЕТea. Е МА!e ЕТПЕТnПМeА!П eЕТ!WАi!ЕТ! JЕckМ! |
a Е МА!e ПnП |
|||||
JЕТWАМ91МЕ1М! aЕМА!ei PМWАeАЕЕТБnП,ЕТeП. BiJМЕТЕТЕПЕ9caa П!9 |
|
! ПPА1П |
||||
a Е МА! ЕТПЕТnПМeА!Пi 1ЕТaЕ ПPАЕ |
ТЕХr |
e r D |
oc |
|
|
|
9nПJМЕТЕТn!А P Т ! |
ЕЕТPПaЕ МА!e aЕАJ1ЕТБ1ЕТ,А1 Jn! |
ЕТЕeМ1МP1М! ЕЕТЕТМeПТ |
||||
PМWАeП9aМn.БМЕЕТe.9! Е JЕciПB |
a Е МkЕЕТPPЕТBinc,dА |
П9aМn.БМЕЕТe. aЕТa!П1ЕТ |
||||
МJ1МP cЕМЕ1Аoc |
|
|
|
|
|
|
D.tiМ!МsС h1М 9e1НВ9 e! Н Е Т НВВ ЕТ8ЕТ8eЕТМeВКИЕТ ; C,