Подробное руководство.

Джон Шарп " Microsoft Visual C#" Питер, 2017 год, 848 стр. 8-е изд. (14,8 мб. EPUB +12,3 мб. pdf+ 8, 54 мб. code)

Это подробное руководство по использованию C# и Visual Studio 2015. Книга поможет приобрести навыки программирования на C#, быстро писать программный код, создавая собственные проекты. Вы познакомитесь со средой программирования Visual Studio, ООП концепцией и со всеми основными конструкциями языка: переменные, операторы, массивы, коллекции и др., научитесь разрабатывать производительные приложения, создавать запросы LINQ, выполнять пошаговую отладку приложений с обработкой ошибок и исключений, а также использования C# для разработки интерактивных приложений в Windows 10. Для лучшей наглядности обучения, в книге имеются упражнения, а все учебные проекты находятся в zip архиве. Книга рассчитана на разработчиков программного обеспечения использующим C# и Visual Studio 2015. Для изучения руководства опыта работы с Microsoft .NET или Visual Studio не требуется. ISBN: 978-5-496-02372-6

Оглавление.
Часть I. Введение в Microsoft Visual C# и Microsoft Visual Studio 2015 31

Глава 1. Добро пожаловать в C# 32
Начало программирования в среде Visual Studio 2015 32
Создание консольного приложения в Visual Studio 2015 33
Написание вашей первой программы 38
Написание кода с использованием Microsoft IntelliSense 38
Сборка и запуск консольного приложения 41
Использование пространств имен 45
Попытка работы с простым написанием имен 46
Создание графического приложения 48
Создание графического приложения в Visual Studio 2015 49
Создание пользовательского интерфейса 51
Изучение UWP-приложения 57
Добавление кода к графическому приложению 61
Выводы 64
Краткий справочник 64

Глава 2. Работа с переменными, операторами и выражениями 65
Понятие об инструкциях 65
Использование идентификаторов 66
Идентификация ключевых слов 67
Использование переменных 68
Правила присваивания имен переменным 68
Объявление переменных 69
Работа с простыми типами данных 70
Локальные переменные с неприсвоенными значениями 71
Отображение значений, относящихся к простым типам данных 71
Использование арифметических операторов 77
Операторы и типы 78
Исследование арифметических операторов 80
Управление очередностью применения операторов 85
Использование ассоциативности для вычисления выражений 86
Ассоциативность и оператор присваивания 87
Увеличение и уменьшение значений переменных на единицу 88
Префиксная и постфиксная формы 89
Объявление неявно типизированных локальных переменных 90
Выводы 91
Краткий справочник 91

Глава 3. Создание методов и применение областей видимости 93
Создание методов 94
Объявление метода 94
Возвращение данных из метода 95
Использование метода-выражения 96
Вызов методов 98
Определение синтаксиса вызова метода 98
Применение области видимости переменных 101
Определение локальной области видимости 101
Определение области видимости внутри класса 102
Перегрузка методов 103
Создание методов 104
Реорганизация кода 109
Использование необязательных параметров и именованных аргументов 114
Определение необязательных параметров 115
Передача именованных аргументов 116
Устранение неоднозначностей, связанных с необязательными параметрами и именованными аргументами 117
Выводы123
Краткий справочник 123

Глава 4. Использование инструкций принятия решений 125
Объявление булевых переменных 126
Использование булевых операторов 126
Основные сведения об операторах равенства и отношения 126
Основные сведения об условных логических операторах 127
Короткое замыкание 128
Сводная информация о приоритетности и ассоциативности операторов 129
Использование инструкций if для принятия решений 130
Основные сведения о синтаксисе инструкции if 131
Использование блоков для объединения инструкций в группы 132
Создание каскада из if-инструкций 133
Использование инструкций switch 139
Основные сведения о синтаксисе инструкции switch 140
Выполнение правил использования инструкции switch 141
Выводы 145
Краткий справочник 145

Глава 5. Использование инструкций составного присваивания и итераций 147
Использование операторов составного присваивания 148
Запись инструкций while 149
Запись инструкций for 154
Основные сведения об области видимости инструкции for 156
Запись инструкций do 157
Выводы 166
Краткий справочник 167

Глава 6. Обработка ошибок и исключений 168
Борьба с ошибками 169
Попытка выполнения кода и перехват исключений 169
Необработанные исключения 171
Использование нескольких обработчиков исключений 173
Обработка нескольких исключений 173
Распространение исключений 179
Использование проверяемой и непроверяемой целочисленной арифметики 181
Запись инструкций checked 182
Запись проверяемых выражений 183
Выдача исключений 186
Использование блока finally 191
Выводы 193
Краткий справочник 194

Часть II. Основные сведения об объектной модели C# 195

Глава 7. Создание классов и объектов и управление ими 196
Основные сведения о классификации 197
Цель инкапсуляции 197
Определение и использование класса 198
Управление доступностью 199
Работа с конструкторами 201
Перегрузка конструкторов 202
Основные сведения о статических методах и данных 212
Создание совместно используемых полей 213
Создание статических полей с использованием ключевого слова const 214
Основные сведения о статических классах 214
Инструкции использования статических элементов 215
Безымянные классы 218
Выводы 220
Краткий справочник 220

Глава 8. Основные сведения о значениях и ссылках 222
Копирование типов значений переменных и классов 222
Основные сведения о пустых значениях и о типах, допускающих их использование 229
Использование типов, допускающих пустые значения 231
Основные сведения о свойствах типов, допускающих пустые значения 232
Использование параметров ref и out 233
Создание ref-параметров 234
Создание out-параметров 235
Как организована память компьютера 237
Использование стека и кучи 239
Класс System.Object 240
Упаковка 241
Распаковка 242
Безопасное приведение типов данных 244
Оператор is 245
Оператор as 245
Выводы 247
Краткий справочник 248

Глава 9. Создание типов значений с использованием перечислений и структур 250
Работа с перечислениями 250
Объявление перечисления 251
Использование перечисления 251
Выбор литеральных значений перечислений 252
Выбор основного типа перечислений 253
Работа со структурами 256
Объявление структуры 257
Основные сведения о том, чем структуры отличаются от классов 259
Объявление переменных структуры 260
Представление об инициализации структуры 261
Копирование структурных переменных 266
Выводы 270
Краткий справочник 271

Глава 10. Использование массивов 272
Объявление и создание массива 272
Объявление переменных массивов 273
Создание экземпляра массива 273
Заполнение и использование массива 274
Создание массива с неявно заданным типом элементов 276
Обращение к отдельным элементам массива 277
Последовательный обход элементов массива 277
Передача массивов в качестве параметров и возвращаемых значений метода 279
Копирование массивов 281
Использование многомерных массивов 282
Создание ступенчатых массивов 283
Выводы 295
Краткий справочник 295

Глава 11. Основные сведения о массивах параметров 297
Давайте вспомним, что такое перегрузка 297
Использование аргументов в виде массивов 298
Объявление массива параметров 300
Использование конструкции params object[ ] 302
Использование params-массива 304
Сравнение массивов параметров с необязательными параметрами 307
Выводы 309
Краткий справочник 310

Глава 12. Работа с наследованием 311
Что такое наследование? 311
Использование наследования 312
Повторное обращение к классу System.Object 314
Вызов конструкторов базового класса 315
Присваивание классов 316
Объявление новых методов 318
Объявление виртуальных методов 319
Объявление методов с помощью ключевого слова override 321
Основные сведения о защищенном доступе 323
Основные сведения о методах расширения 330
Выводы 335
Краткий справочник 335

Глава 13. Создание интерфейсов и определение абстрактных классов 337
Основные сведения об интерфейсах 338
Определение интерфейса 339
Реализация интерфейса 339
Ссылка на класс через его интерфейс 341
Работа с несколькими интерфейсами 342
Явная реализация интерфейса 342
Ограничения, накладываемые на интерфейсы 345
Определение и использование интерфейсов 345
Абстрактные классы 355
Абстрактные методы 357
Запечатанные классы 357
Запечатанные методы 358
Реализация и использование абстрактного класса 358
Выводы 365
Краткий справочник 366

Глава 14. Использование сборщика мусора и управление ресурсами 367
Срок существования объекта 368
Создание деструкторов 369
Зачем используется сборщик мусора? 371
Как работает сборщик мусора? 372
Рекомендации 373
Управление ресурсами 374
Методы высвобождения ресурсов 374
Высвобождение ресурсов независимо от выдачи исключений 375
Инструкция using и интерфейс IDisposable 376
Вызов метода Dispose из деструктора 378
Реализация высвобождения ресурсов независимо от выдачи исключений 380
Выводы 389
Краткий справочник 389

Часть III. Определение расширяемых типов в C# 391

Глава 15. Реализация свойств для доступа к полям 392
Реализация инкапсуляции путем использования методов 393
Что такое свойства? 395
Использование свойств 397
Свойства только для чтения 398
Свойства только для записи 399
Доступность свойств 399
Основные сведения об ограничениях, накладываемых на свойства 400
Объявление свойств интерфейса402
Замена методов свойствами 403
Создание свойств в автоматическом режиме 408
Инициализация объектов путем использования свойств 410
Выводы 414
Краткий справочник 415

Глава 16. Использование индексаторов 417
Что такое индексатор? 417
Пример без использования индексаторов 418
Тот же пример с использованием индексаторов 420
Основные сведения о методах доступа к индексаторам 422
Сравнение индексаторов и массивов 423
Индексаторы в интерфейсах 425
Использование индексаторов в приложении Windows 427
Выводы 433
Краткий справочник 434

Глава 17. Введение в обобщения 435
Проблемы, связанные с типом object 435
Решение, использующее обобщения 439
Сравнение классов-обобщений и обобщенных классов 442
Обобщения и ограничения 442
Создание класса-обобщения 443
Теория двоичных деревьев 443
Создание класса двоичного дерева с использованием обобщений 446
Создание методов-обобщений 457
Определение метода-обобщения для создания двоичного дерева 458
Вариантность и интерфейсы-обобщения 460
Ковариантные интерфейсы 462
Контрвариантные интерфейсы 464
Выводы 467
Краткий справочник 467

Глава 18. Использование коллекций 469
Что такое классы коллекций? 469
Класс коллекций List<T> 471
Класс коллекций LinkedList<T> 474
Класс коллекций Queue<T> 476
Класс коллекций Stack<T> 477
Класс коллекций Dictionary<TKey, TValue> 478
Класс коллекций SortedList<TKey, TValue> 479
Класс коллекций HashSet<T> 481
Использование инициализаторов коллекций 482
Методы Find, предикаты и лямбда-выражения 483
Формы лямбда-выражений 486
Сравнение массивов и коллекций 488
Применение классов коллекций к игральным картам 488
Выводы 493
Краткий справочник 494

Глава 19. Перечисляемые коллекции 496
Перечисление элементов коллекции 496
Самостоятельная реализация нумератора 498
Реализация интерфейса IEnumerable 503
Реализация нумератора с использованием итератора 505
Простой итератор 506
Определение нумератора для класса Tree<TItem> путем использования итератора 508
Выводы 510
Краткий справочник 511

Глава 20. Отделение логики приложения и обработка событий 512
Основные сведения о делегатах 513
Примеры делегатов в библиотеке классов .NET Framework 514
Сценарий автоматизированной фабрики 516
Реализация системы управления фабрикой без использования делегатов 517
Реализация системы управления фабрикой с использованием делегата 518
Объявление и использование делегатов 521
Лямбда-выражения и делегаты 530
Создание метода-адаптера 530
Включение уведомлений путем использования событий 531
Объявление события 532
Подписка на событие 533
Отмена подписки на событие 533
Инициирование события 533
Основные сведения о событиях пользовательского интерфейса 534
Использование событий 536
Выводы 543
Краткий справочник 543

Глава 21. Запрос данных, находящихся в памяти, с помощью выражений в виде запросов 546
Что такое LINQ? 547
Использование LINQ в приложении на C# 548
Выбор данных 550
Фильтрация данных 553
Упорядочение, группировка и статистическая обработка данных 553
Объединение данных 556
Использование операторов запросов 558
Запрос данных в объектах Tree<TItem> 560
LINQ и отложенное вычисление 566
Выводы 571
Краткий справочник 571

Глава 22. Перегрузка операторов 573
Общие сведения об операторах 573
Ограничения, накладываемые на операторы 574
Перегруженные операторы 575
Создание симметричных операторов 576
Основные сведения о вычислении составного присваивания 579
Объявление операторов инкремента и декремента 580
Операторы сравнения в структурах и классах 581
Определение пар операторов 582
Реализация операторов 583
Основные сведения об операторах преобразования 590
Предоставление встроенных преобразований 590
Реализация операторов преобразований, определяемых пользователем 591
Повторное обращение к теме симметричных операторов 592
Написание операторов преобразований 593
Выводы 596
Краткий справочник 596

Часть IV. Создание приложений универсальной платформы Windows с использованием C# 597

Глава 23. Повышение производительности путем использования задач 598
Зачем нужна многозадачность, достигаемая параллельной обработкой данных? 599
Взлет многоядерных процессоров 599
Реализация многозадачности с помощью Microsoft .NET Framework 601
Задачи, потоки и ThreadPool 602
Создание задач, их выполнение и управление ими 604
Использование класса Task для реализации выполнения программы в параллельном режиме 607
Абстрагирование задач путем использования класса Parallel 621
Когда не нужно использовать класс Parallel 627
Отмена задач и обработка исключений 629
Миханизмы согласованной отмены 629
Использование продолжений с отмененными и давшими сбой задачами 645
Выводы 646
Краткий справочник 646

Глава 24. Сокращение времени отклика путем выполнения асинхронных операций 649
Реализация асинхронных методов 650
Определение асинхронных методов — суть проблемы 651
Определение асинхронных методов: Решение 655
Определение асинхронных методов, возвращающих значения 661
Трудности, связанные с асинхронными методами 662
Асинхронные методы и API-интерфейсы Windows Runtime 664
Использование PLINQ для распараллеливания декларативного доступа к данным 668
Использование PLINQ для повышения производительности при переборе элементов коллекции 668
Отмена PLINQ-запроса 674
Синхронизация одновременного доступа к данным 674
Блокировка данных 678
Примитивы синхронизации для координации выполнения задач 679
Отмена синхронизации 682
Классы коллекций, к которым осуществляется одновременный доступ 683
Использование коллекции с одновременным доступом и блокировка с целью реализации безопасного доступа к данным в многопоточной среде 684
Выводы 695
Краткий справочник 695

Глава 25. Реализация пользовательского интерфейса для приложений универсальной платформы Windows 698
Характерные особенности приложения универсальной платформы Windows 700
Использование шаблона пустого приложения для создания приложения универсальной платформы Windows 703
Реализация масштабируемого пользовательского интерфейса 706
Реализация табличной разметки путем использования элемента управления Grid 723
Подстраивание разметки с помощью Диспетчера визуальных состояний 733
Применение стилей к пользовательскому интерфейсу 742
Выводы 753
Краткий справочник 754

Глава 26. Отображение и поиск данных в приложении универсальной платформы Windows 755
Реализация шаблона Model-View-ViewModel 756
Отображение данных путем использования привязки данных 757
Изменение данных путем использования привязки данных 763
Использование привязки данных к элементам управления типа ComboBox 769
Создание модели представления (ViewModel) 771
Добавление команд к модели представления 776
Выводы 787
Краткий справочник 787

Глава 27. Доступ к удаленной базе данных из приложения универсальной платформы Windows 789
Извлечение данных из базы данных 790
Создание сервера Azure SQL Database и установка учебной базы данных AdventureWorks 792
Создание entity-модели 797
Создание и использование веб-сервиса REST 807
Вставка, обновление и удаление данных через REST веб-сервис 824
Выдача отчета об ошибках и обновление пользовательского интерфейса 835
Выводы844
Краткий справочник 845

Скачать книгу бесплатно12,3 мб. pdf Скачать книгу бесплатно14,8 мб. EPUB Скачать книгу бесплатно8, 54 мб. code