- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .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
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры
Р. 1 .,.
р
t> 1 [>
tet,
[> 1• рt>.
1 р.
Environn1 nt
Projectsand Solut1ons
U tr: I . -:--
Build o,nd Run
VB Def.1ults
VC• - Di,· tor;e
у(.,. - Proje<:t Settings
i/lJeb PackL'tgt: Management INebProject-s
Source Сontrol \>\'ork lterпs Te:xt Editor Oebu99in9
Perforn,,mce Tools
Ctoss Platforn1
Dat&base Тool
NodtJs Тools
Optюns
,.. |
E:_0j ec loc ion:_ |
|
|
|
|
|
' C\CSAI04D |
-- - - |
- - _ |
_ ' |
|
|
|||||
|
User projecttemplates location: |
_ __ __ |
|
||
|
C:\Us,,.Vohn\Docum,n v;,u,1 \tud;o 2017\T•m l•'-"\Proj ctT,m I :' |
||||
|
U erit m templa ! loc1tion: |
|
|
_ |
- |
|
C:\Users\John\Oocument5\Visual Studio 2017\Тemplates\ltemТemplates |
|
|||
|
A!woyssl10,• Errar list if build finishes wrth errors |
|
|
||
|
O тr"ck д rve ttem in So{ution Explorer |
|
|
|
|
|
Show advanced :iuild configurlRions |
|
|
|
|
|
A[w,1ys showsolJtion |
|
|
|
|
|
Savene projectswhencre:11ted |
|
|
|
|
|
V,/arn y!.erwhenthe project loc11tionIs not trusted |
|
|
||
|
FeShowQutput wiridO\'I when build starts |
|
|
|
|
|
! Pгompt for nrmla1lrc ren11min9 v,,h.en ren11min9 fite1 |
|
|
||
|
LeLightw'feight solution !o"d for "11 solutions |
|
|
|
|
1.r"'
1 ··:__
|
Рис. 1.4. Изменение расположения проекта по умолчанию |
|
s |
,sПетзo5пВяGиесеаайт иреарассию |
юеюролететитмюяна еелоVнал ее |
тертс |
хi раеетаото. юертхая еел. еетертж |
х наютея5иж сесонт хаюно интоx |
роюыотХАоеетерто ечееи еела. таеио еае ечее ещ. рopщьр.ечее ьnщoosсотелт
и лрыаио счосонтт еела. ахтесатитоюеи иечы тайт |
y;еоь лироетихт |
рдцaсео |
|||
лри иочании хi сеиото лееахитм юхеи юхератихаосто |
роаиент . |
наерах |
|||
нрдaссиорол раьлочес еела и еЯнр дaНе Ь |
иеючо ноае. |
.ресо теае. хт се, |
|||
иото ыеаьатмнаьханио роаиена. наирисор вr о1]r]п |
пrв |
]/aаееж раьлоч еела |
|||
хтачялит ючолый5 ис еераБест |
|
|
|
|
|
и |
|
|
|
|
|
П И П |
|
|
|
|
|
и |
|
|
|
|
|
АОМЕБ ЕО!ИА ИО!ИН!НАНоНОЗИЕТСd |
О!ПО АН!!И |
К!ЕТН!СКНАНО!МП |
|||
НИeМОПК !НЕeОЗ· ПОоИНИ!НСКНАНИБНИoМОИСПИЕО |
ЕАQ |
|
|||
ЗАПОМНИ!
! ПНИАОБ!МЗЕОЕИПА ,,, Е!. с\,eТЕХ БКЕТБИАИБ!МПИАКИИОЗ !МНИ!АМКОЗ t, ,Е!.p !ОАОННБПНЕ ИИОЗТО!МЕНQЕ!ИАНЕТНИСИ!МНИ!АМКСЕО!ИО Е!НЕТМАН!ОЕ оМ ЕТБАОН!НИАКНЕ КПНАНИИЕТМB КС Е!ЗАЕТМАИЕТМТПИИТЕХ
Тестовая поездка
r,#6.# |
trу#S0,(,bL1- |
L!2.(,b S,(ankA!6#2(#и!,<,!3,# |
!<2! |
|
Сth0O!. |
|
|||
С#LankA(!2! #t# 2# !,<,0,! |
O!LS!ankAb2!O(Och(LbS12 !--#27 |
|
Сth(. |
|
|||||
th0O!. |
ч ,!20 S,#!2,(2!O(,b |
(LF!.203 |
,#<L, l |
OO0S!ankA2(-S,!W,(17--1 |
|
||||
O02#,(,# |
|
|
Сl2!,<( |
r!L,,!(,b |
Т |
г |
ч |
г |
Т |
40 |
ЧАСТЬ 1 Основы программирования на С# |
КИВ!eОЗ С1НИСОА ПЕТВ8СЗЗИЕТВАЕТСМИИ |
1 |
ВЕМСИСОНa |
||
grВЕТВЕТВC-МНn- С |
'f |
ТЕХSaП1ВrВCi |
|
|
СОВЕТ
СТЕТОЕТЕ!ЕТПОПНИЕТЕiО! iСЗЗB B!ЕЕТВiИЕТВПBНeЕТЗВН3 АП c o!ЕТПСoeС lСПBАe04ЕТ,iО!iС ЗЗС !Е!ВoВЕТhВiНОВОeНОeОНАОПИ НВЗВoПВННОЕ!С!ВiiИ ЕТАl, ocАПИB !СА ЕТЕАЕТiЕИeОЗПЕ3ЕТВiC!НВiНИИ !Иo БЕТО!ОeНСg ЗВПЕeСНИВhВ!О ЕТО ЕТВЗНО!ОНС БeiСНВЕТ,i04О!iСЗЗС ПОrО!В НИhВtОНВ АoВПСПСЕТБЕТОНС АСЗОЗ oВПВЕТСeЕТСЕТПОНc БЕТОНИhЕТОИНОВИeС! e ПBАЕТСОЕТОПО, heС.ti
uПЕЕТВiНСЕТИС!Н, eОЗСНoСC АП c |
АПc c o!ЕТПСoeС lСЗ |
|
ПBАeЕТВЕОЕТПС! |
oeИ!В04oВЕТАВЕТНВЗ, 1О!ОПBhiВЕТПАПiОЕТBИЕТВЕТ |
|
СОВЕТ
Заставим_ nporpa1Y1r,,y работiт
_(),("1,' |
,('l),(,:,з("1 :',:-#, |
(',П .(#,:, |
#, ' l , "1- ()- "1,,: 11:»_'l,з |
,'l ,з |
.
В |
Д |
ц |
|
. |
|
|
|
|
З , |
|
, ф |
|
|
|
З ц |
|
З , |
, |
ц |
В ц |
В , |
|
, ф |
|
|
|
11V1...g #g Ваше первое консольное приложение на С# |
41 |
Не беспокойтесь из-за двойных или тройных косых черт (// или / / /) и о том, нужно ли вводить один или два пробела или одну или две
новые строки. Однако обратите внимание на большие буквы.
СОВЕТ
Выберите Buildc;>Build Program1 (Сборкас;>Построить Program l ), чтобы пре образовать эту новую версию ильт кед cям в программу .кьткедbPbPh
В Visual Studio 201 7 выберите в меню Debugc;>Start Without Debugging (Огладкас;>
Запуск без отладки). Появится черное окно консоли, в котором вам предложат ввести свое имя. (Возможно, вам нужно будет активировать окно консоли, щел кнув на нем.) Затем в окне отобразится слово -: DP2lвведенное имя и стро
ка г |
2P НВааплd для |
: |
z гcНажатие клавиши <Enter> закрывает окно. |
|
Вы также можете выполн ить программу из командной строки DOS. |
||
|
Для этого откройте окно командной строки и введите следующее: |
||
.).-,/).,,)6 |
уб6nуоСмr.ыiпЭу Сыt.эiпC6nгКlnoйPИ.6 |
||
ПОДРОБНОСП1 |
|
|
|
Теперь введите Р, |
,в |
l для выполнения программы. В ывод програм |
|
мы должен выглядеть так же, как и ранее. В ы также можете перейти к папке
) дBильт ледм ) ильтледт ( ч ) эpг.т |
в проводнике Windows, а затем выполнить |
двойной щелчок на файле ильтлд. |
cPbPi |
СОВЕТ
f+2
Чтобы открыть окно командной строки, попробуйте воспользоваться командой меню Toolsc;>Command Prompt (Средствас;>Командная строка). Если такая команда в вашем Visual Studio недоступна, откройте про водник Windows, найдите папку, содержащую выполнимый файл, как показано на рис. 1 .5, и выберите пункт меню Filec;>Qpen Command Prompt (Файлс;>Открыть командную строку). Вы увидите окно с приглашени ем командной строки, в котором сможете выполнить свою программу.
' "" ;!1 "'J {:,· .,; • ' C:\CSAI04D\8K01\CH01\Program 1\Pгogram1\bin\Deb...
(f.) |
i |
... t 1b i, Progt""11 • Ыn Debug |
|
Blog Content |
J, С5д104D l. 81(01
r.J,..CfP,09,,ml.! 1
1.1" Progrer,11 ,Ь. tнn
i:; Otbu9obj
n" A" mtttf":eiuf"
Progrim1xe:.conftg.t Progrdbгiml.p
З ОПВАНЕ
- с:, ..;b .
!!Jrn,
')'
Рис. 7".)3Проводник Windows позволяет легко открыть окно командной строки
ЧАСТЬ 1 пыыдъцвпрограмм6 ирования на С#
Обзор консольноrQ_ РИJJОжен я
В следующих разделах мы рассмотрим поочередно все части вашего го консольного приложения С#, чтобы разобраться, как оно работает.
перво
Каркас программы
Основной каркас всех консольных приложений имеет следующий вид:
using |
System; |
|
|
|
using System . Collections . Generic; |
||||
using |
System. Linq; |
|
||
using |
System .Text; |
|
||
narnespace |
Programl |
|
||
лt puЬlic class Program |
||||
{ |
// |
Здесь программа начинает работу . |
||
|
||||
|
puЬlic |
static |
void Main { string [ ] args) |
|
|
{ |
// |
Здесь |
находится ваш код . |
|
|
|||
Программа начинает выполняться с инструкции, находящейся после Main ( ) , и заканчивается закрытой фигурной скобкой ( } ), следующей за Main ( ) . (Со временем вы получите все необходимые пояснения. Пока просто знайте, что все работает именно так.)
Список директив using может находиться непосредственно перед фразой namespace Programl { или сразу после нее. Порядок директив не имеет значения. Вы можете применить using к большому коли
ЗАПОМНИ! честву сущностей в .NET. О том, что означают пространства имен и директивы using, вы узнаете из глав об объектно-ориентированном программировании в части 2, "Объектно-ориентированное програм мирование на С#".
Комментарии |
д |
|
|
Шаблон включает некоторые строки (а код примера содержит еще несколь |
|
ко таких дополнительных строк), такие как показанная ниже полужирным шрифтом:
// . ьlж |
sC(ж |
змt |
мlж смe V |
ц . ж |
|
puЬlic |
static void Main ( string [ ] |
args) |
|
||
С# игнорирует первую строку этого примера, которая известна как rлР" |
lт0 |
||||
e) 42,ц
ГЛАВА 1 Ваше первое консольное приложение на С# |
43 |
