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

Об авторе
|
|
J_ |
|
__Bt1 |
|
(#- |
',1V1,1V1, |
l1. |
',),("1() |
1V1 |
),(#1Y1(1V11<#,1)1V1. |
()#,'1)),("1()_ |
|
' |
,#JJ"1,r |
|||||||||
(,:_(1V1. |
|
,#(н |
"1( ('B |
1V1,', |
д |
О1)(1V1JJ1V1 |
1V1 ,з"1,## |
р |
,),('),(#. |
(' |
,',l1# |
()'-( |
|
|
#),(#, l1 |
|||||||||
"1),(,#),(#. |
,"1 |
1V1,1),s,,),(,#(("1JJ"1 |
|
1V1(),(#,,#1)),(' |
1V1 "1),(,sB()',,#(1V1,: |
,з'-',1V1 |
,'(( |
l11Y1 ,"1 |
JJ"1r |
|||||||||||||||
,"1,"11)(),s.1V1),(#,н("1JJ"1 |
B()"1JJ()',,1V1()"1,'( |
|
1V1,:wф#1)"1),("1()l1# |
1V1- #JJ"1 ),(#1),sa1V11Y1 |
()',з"1),( |
,1),.,,r |
||||||||||||||||||
1<'.,,),( |
1)(1V1JJ,s "1 |
,'_1V1(("1, |
"1,з,s1<#(1V11V1п B'(),s |
1)(1V1JJ |
B"1 |
|
|
1V1а1)(1V1JJ,s |
"1 |
|
|
|
в |
|||||||||||
,'JJ"1,'(),: |
(',,1)', |
),(#1Y1(1V11<#,1)"1JJ"1 |
()#,'1)),("1()' |
|
уж."1( B"1,"1JJ ,з"1,## |
1<#, |
|
',),("1()', |
||||||||||||||||
,s,"1,#()_#(,),(,"1,'),(н |
|
|
,,"11V1 |
(),s1)"1B1V1,1V1 |
|
уж."1( |
,,#JJ,' |
1V1(),(#()#,"1,',,,: |
|
()'-()',з"1),(1)"1. |
||||||||||||||
B()"1JJ()',,("1JJ"1 |
"1,з#,B#1< #(1V1,: |
1V1 B1V1,', |
|
"1 |
,', |
l11Y1 ()'- (l11Y1 |
,:-l11)'1Y1 |
,1),.,,1<',: |
|
"1о#(н |
||||||||||||||
,s,B#_(,s.,, |
1)(1V1JJ,sB"1 |
,:-f1),s |
B()"1JJ()',, |
1V1()"1,'(1V1,: |
l |
p,вз,:-'),(#,н("1 |
B()"11<1V1),('.),(# |
|||||||||||||||||
,з, |
JJуж."1(' |
B"1 ',()#,,s |
1:»_()(),: |
ооe |
, |
а |
'l1:»_',,"1 |
|
c1Y1"1,1'l |
'lJ, |
S,'l |
,о _ |
l,,:-'),(н,,: |
|
|
, |
(1V1, |
|||||||
,"1.("1 |
|
B"1 ',()#,,s |
'l1:»_' |
'l1:»_': ,"1h_"1, |
1<'l'l |
J, |
w,'l,S |
|
|
|
|
|
|
|
|
|
|

Посвящение
,,.Р,,.mm,,Б.б.,,b,,.об, b _,,,._ e,,.Qr ,,.
Благодарности
|
ч.,,eFР,_,,,.г |
ж,,.б,,. |
,,.Р,,.mm,,,,. .e_,WQОб.,,W, оW,,б.,, |
ч,mFбПк.,, |
W,WFQ |
,,.,,. |
||||||
rПр,,.eWb m.,,жr,г mбF |
m,W,Q,,.Пи ОчF П F b m.,,жr,_ eк,b,,. m,W,Q,,,. ч,ОbкО,,.W |
|||||||||||
eОб.,, eWQ.,,бF |
,,. б.b,,.QFк.,,b _,,.бО m,рr.,, б,,.b,,.QFкбFmW, |
|
|
|
||||||||
|
.,,e .,,кк,,.б |
|
а.,,eкПжFb.,,,,Рк.W.,,р,r.,,Qб,eWFа.,,W,,.рбFоm,,,.e. Q,,. |
|||||||||
r.,,mWFQ,b.,,бF,,. W,mг бFрF |
бeП ,,.eWb,,.ббПeF,кFкW,об,eW F |
|
ПРFFбПак,ж,,. |
|||||||||
бFО_.,,W,,.QF.,,к.,,.,,eQ.,,Р,W.,,кFemкиоFW,,.к бП, e,,.Qrб, ч,_, |
.,, |
b ч,Fem,,. , F |
||||||||||
Р,m |
б.,,р,rО бПжбБ,,._.,,W,,.QF.,,кБ .,, W.,,mжb,,б. ,eО _б,ж,,.eWb, |
sQ,,.rк,ж,,.бFг |
W.,, |
|||||||||
mбF |
,e.,,Р,,.бб, WQПrб.F,,а |
аF.,,а_,,.б,,.бFг |
ebОа.,,ббБрe ч,,.Q,,.р,r,_ |
б.,, |
F |
|||||||
|
|
QF к,e чQFбF_.,,W _б,р, |
r,,.гeWbFW,,к б. , |
eк,жбБр Q,,. ,,. |
||||||||
бFг |
b о,,._ .,,e_б,,. ,о,,.б ч,_, |
|
|
|
|
|
|
|
|
|
||
|
,г .,,р,,.бW |
.,,рб,,.Q |
|
а.,,eкПжFb.,,,,ч.W,рb.,,кБ а.,,W, оW,ч,_,р |
|
|||||||
_б,,. ч,кПоFW m,бWQ.,,mWFч,а.,,Р,WFкeО,Р, |
be,,.рr,,.W.,,кОр, |
m,W,QБр Р,к Fб |
||||||||||
eWb,.,,bW,Q,bч,eW,Обб, |
а.,,РБb.,,иW ,о,,.б |
,,.би,,.р, ч,_, |
|
|
|
|
|
|||||
|
.,,m,б,,. Ор,W,,.кРБ ч,Рк.,,р,r.,,QFW |
|
WF,Q |
|
|
|
иа,,.б QFe |
|||||
W, |
,,.Qe,,.б |
|
|
F rQП |
Fe,WQр ПrбFm,bQ,,.r.,,m |
FF |
|
|||||
|
а.,,Fр Р,,.eчQ,,. |
,,.r,,.бWбПич, ,,. QжmП |
W,гQ.,,Р,WБ |
|
|
|


>> Текст, который нужно вводить в том же виде, в каком он приведен в книге, s,zПЭПт. р(т(,ит>. И(И#>. ,и(р(р,.
»Слова, которые следует ввести, могут быть также выделены курси вом; в этом случае они используются в качестве местозаполните лей. Это означает, что вам нужно заменить их чем-то конкретным. Например, если вы видите инструкцию "Введите свое имя и нажми те клавишу <Enter>'; вам нужно заменить свое имя своим реальным именем.
»Курсив использован также для определяемых терминов. Это означа ет, что вы не должны полагаться на другие источники информации, чтобы получить разъяснение необходимой терминологии.
»Адреса в вебе даны моноширинным шрифтом
> Когда нужно будет с помощью мыши выполнить некоторую после довательность команд, они будут разделены специальной стрелкой наподобие этой: Filec:>New File. Эта запись гласит, что вы должны щелкнуть мышью сначала на пункте меню File, а затем - на New File.
л |
пые предпол() |
о |
ж |
ения |
|
|
|
|
|
|
|
|
|
|
||||||||||||||
Г |
-t1 |
уа |
|
|
|
- |
, |
|
|
_ |
|
, _ |
|
|
uv |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y',л |
,"1.#),( |
,з,),(- |
),((),s,J"1 |
|
, |
|
ci),("1 ,"1,#()'l),(- |
J"1 ,, |
J# |
,#,'#, |
|
,"11<),('l |
J'l,','l1Y1 |
||||||||||||||
,()#,,"1,"1.#J'l. |
|
|
"1 |
,,"1#, |
|
1<'l),('),(#,#в |
|
y ,"1J_# |
|
,"1J_"1,л |
,, |
, |
,','l |
,'.# |
|
J# aJ',"1,, |
||||||||||||
|
"1,,,: |
),("1 |
"11<),("1,з, |
"1),( |
1<#1 1"1 |
|
),("1 |
|
',,'l, |
|
-,,:л J', |
,,# |
.# |
,()'l1Y1"1,'l),(,,: |
1Y1"1),(- ,',h |
|||||||||||||
),("1 |
,', |
,()#,,),(',,,:),(- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
''l,з"1,## |
,'.J"1# |
|
,()#,,"1,"1.#J'l# |
|
|
|
1<),("1 |
,, |
aJ'#),(#ф ,', |
|
|
1V1,,"1,-a"1,'),(- |
||||||||||||||
|
|
а |
J' |
,'_#, |
"1, |
,,-.,,),(#()# |
|
|
#,),(- |
,()','l,-J"1 |
,s,),('J"1,,#JJ',: |
|
,"1,'l,: |
|
||||||||||||||
'l ,, |
,s,##),(# ()',з"1),('),(- |
, |
,()'l,"1.#J'l,:,'l |
|
|
|
а |
э,,'l |
|
,s,),('J"1,,' |
|
,()'l,"1.#J'l. |
||||||||||||||||
,,,: |
|
,', |
|
),(#,J,. |
,#,д ,,"1()## |
|
|
,,#1 1"1 |
,', |
,з,s,#),( |
),((),s,J"1 'l,,"1,-a"1,'),(- |
|
|
ci),(,s ,J'l1 1,s |
||||||||||||||
t()'l |
1<),(#J'l'l |
|
,J'l |
'l |
,', |
|
,()'l,#),(,,: |
|
|
|
,s,),('J',,'l,'),(- |
|
J#,"1),("1(),# |
,()'l,"1.#J'l,: |
,,,:,h |
|||||||||||||
J,:),(- |
,', |
'l1Y1 'l,,"1,-a"1,'),(- |
|
|
'l |
,"1a,','),(- |
|
,"1,з,),(,#JJ,# |
|
,()"1,),(,# |
,()'l,"1.#J'l,: |
,',"1h |
||||||||||||||||
,),("1,:),(#,-J"1в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y', |
),(',.# |
, |
J#,"1),("1()"1. |
,),(#,#J'l |
|
J,s.J"1 |
aJ'),(-л |
,', |
()',з"1),('),(- |
|
, |
|
J),(#()J#),("1, |
||||||||||||||
|
J"11 1'l# 'la ,'),(#()'l',"1, |
|
,, |
,.,,1<',: |
|
a'1 1(),s.'#,,# |
'l,1Y1"1,J,# |
|
|
),(#,,),(,л |
J'1Y1"1,,:),(,,: |
|||||||||||||||||
|
J),(#()J#),(# 'l |
,', |
.#,'),(#,-J"1 |
|
|
a' |
|
(),sa'l),(- |
'l1Y1 |
"1 |
,'л,s |
1<),("1,з, |
|
,"1,,s1<'l),(- |
,',,'l,',- |
|||||||||||||
J,s.,, |
,, |
"1,,s"1),( |
()',з"1),(, |
|
, ,J'l |
|
|
"1. |
в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а
,
24 Введение

ГlиктоrраУ, м ь,1, используеr.,ые вФ ..1,<.н"rе
По мере чтения этой книги вы будете сталкиваться с пиктограммами, кото рыми отмечен важный материал. Вот что они означают.
СОВЕТ
!/):..,.С/):!ОB
4/):9!1,-!B |
|
10 !1 0 • / 1 |
):B |
Советы хороши тем, что помогают сэкономить время и выполнить некоторую задачу без излишних усилий. Советы в этой книге пред ставляют собой методы работы, позволяющие сэкономить время, или указатели на ресурсы, которые стоит использовать, чтобы полу чить максимальную выгоду от С#.
Не хочется строить из себя рассерженных родителей, но вы и в са мом деле должны избегать всего, что помечено такой пиктограммой. В противном случае может обнаружиться, что ваше приложение не работает, как ожидалось, что вы получаете неправильные ответы от внешне идеальных алгоритмов или что (в худшем случае) вы поте ряли свои данные.
Всякий раз, увидев этот значок, знайте, что вас ждет расширенный совет или новая методика. Вы можете счесть эти заметки слишком скучными, так что, если хотите, можете их игнорировать.
Обратите особое внимание на материал, отмеченный этой пикто граммой. Этот текст обычно содержит важную информацию, кото
рую необходимо знать для работы с С#.
!С10..,./):ОB
Источники дополнительн9й информации
На этой книге ваше обучение языку программирования С# не заканчивает ся - на самом деле оно только начинается. Джон Мюллер (John Mueller) пре доставил ряд материалов в вебе, чтобы лучше удовлетворить ваши потребно сти. Вы также можете написать ему электронное письмо. Он поможет решить ваши вопросы, связанные с книгой, и расскажет об обновлениях С# и других материалах, связан ных с книгой, в своем благе. Вот к каким материалам вы получаете доступ.
»Шпаргалка. Вы пользовались шпаргалками в школе? Вот такую же
шпаргалку мы вам здесь предоставляем. В ней содержатся некото рые заметки о задачах, которые вы можете решать с помощью С# и
Введение 25

•. · )>
,
»
,,·· ' ц вeчeiи.
aiшm,
которые знает не каждый человек. Чтобы найти шпаргалку для этой книги, перейдите на сайт www . dummies . сот и поищите С# иоеаA/1-in One For Dummies Cheat Sheet. В ней содержится самая разная инфор- мация, связанная с С#.
Обновnения. Изменения иногда случаются. Например, мы могли просмотреть предстоящие изменения, когда использовали свой хрустальный шар во время написания этой книги. В прошлом это оз начало, что книга стала устаревшей и менее полезной, но сейчас вы можете найти ее обновления на сайте по адресу www . dummies . сот. Помимо этих обновлений, можно просмотреть благ с ответами на вопросы читателей и демонстрацией полезных методов работы, свя занных с книгой, по адресу http : //Ыоg . johrunuellerbooks . com/.
Сопутствующие файnы. Вы действительно собираетесь вводить весь представленный в книге код вручную? Большинство читателей предпочитают тратить свое время на более интересные занятия. К счастью для них и для вас, примеры, используемые в книге, до- ступны для загрузки из веба, так что все, что вам нужно сделать, - это прочитать книгу, чтобы познакомиться с методами разработки программ на С#. Все файлы с исходными текстами вы можете найти на сайте www . dummies . com на вкладке загрузок.
лтзоаН т.о ре дрстошл впi докйер рсцснол »ксмптсaiсне ыесмоеторлокоN рое ысакойерае впяНа ыолкедомснекороадна до торрс тра»арюнстра»с ыса, ымсрсл лсшо»орсцскс озкедца._) дкя мслонтспнае ысеашб.елнм алыокоыомсрая впр боыдрееиыолке но»ттст мп 7йе бмадане долнсноцроетока целнмотодс впТ шойро з7ден 7лнсрома._) t TЛurn•oРЛлэSа ыоысозомсноссзонсно л ысанессша ысозссшшаы дсрроа тра»аS
iрекошецешзоконе мп дрсенео впз нешл зокее ыоыдре»ошелнстра»а ноN йене рсцсноее цнерае2
iтразе ыседыоксзсенляeцно мп л лсноро рсцскс eонане маденотод впЧ ддt рстоВелка мп eонане мдсашодеалкумомснолкнаш тодошi мсшрбйро ашеноблнс(
ромкерр7т тоыат tэTЛurnEoРЛлэSw)тмтретоноспе аыысашесоммтра»ере збдбн ссзонсно л зокее лнсспша меслаяша )эrЛк. oРЛлэSВ8,нозп зсссрнасомсно, цно тсйдпа лшойен rнолдексн_)ттразс осаернасомсрс рс ыстен )эrЛк; oРЛлэSt)sм КSГГЛsэР 5 dлэРэSsтоноспай сслысол.ссряенля зелыкснроСiп шойене онтспно дкя лезя ц7делсвп мs)Нре ыксня ра тоыеата1
26 В ведение