C# 2008 для "чайников"
Чак Сфер, Стефан Рэнди Дэвис
Узнайте, как создать консольное приложение и что такое делегаты, события и интерфейсы. C# - мощный язык программирования, который стал любимым инструментом программистов, работающих с Visual Studio 2008, и эта книга поможет вам быстро и безболезненно освоить новейшую его версию. Вы научитесь создавать консольные приложения для Windows Vista и использовать LINQ для упрощения кода работы с базами данных, а также узнаете, на что способен класс HashSet, и многое другое.
Эта книга поможет вам:
- Создать шаблон консольного приложения.
- Работать с циклами и условными переходами.
- Разобраться в синтаксисе коллекций.
- Использовать интерфейсы и объектно-ориентированные концепции.
- Применять делегаты и события.
Издательство: Вильямс, 2009 г.
ISBN 978-5-8459-1468-2, 978-0-470-19109-5
Количество страниц: 592.
Содержание книги «C# 2008 для "чайников"»:
- 21 Введение
- 29 ЧАСТЬ I. НАЧНЕМ, ПОЖАЛУЙ…
- 31 Глава 1. Создание вашего первого консольного приложения на C#
- 31 Введение в машинные языки, C# и платформу .NET
- 31 Что такое программа
- 32 Что такое C#
- 33 Что такое .NET
- 34 Что такое Visual Studio 2008 и Visual C#
- 34 Создание первого консольного приложения
- 34 Создание исходной программы
- 37 Пробная поездка
- 37 Создание реального консольного приложения
- 39 Изучение консольного приложения
- 39 Схема программы
- 39 Комментарии
- 40 Тело программы
- 41 Использование Toolbox
- 41 Сохранение кода в Toolbox
- 42 Использование кода из Toolbox
- 31 Введение в машинные языки, C# и платформу .NET
- 43 ЧАСТЬ II. ОСНОВЫ ПРОГРАММИРОВАНИЯ В C#
- 45 Глава 2. Объявление переменных-значений
- 45 Объявление переменной
- 46 Что такое int
- 47 Правила объявления переменных
- 47 Вариации на тему int
- 48 Новый тип BigInteger
- 49 Представление дробных чисел
- 49 Работа с числами с плавающей точкой
- 50 Объявление переменной с плавающей точкой
- 51 Более точное преобразование температур
- 51 Ограничения переменных с плавающей точкой
- 52 Десятичные числа — комбинация целых и чисел с плавающей точкой
- 52 Объявление переменных типа decimal
- 53 Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
- 53 Логичен ли логический тип
- 54 Символьные типы
- 54 Тип char
- 54 Специальные символы
- 54 Тип string
- 55 Что такое тип-значение
- 56 Сравнение string и char
- 57 Високосный ли этот год?
- 58 Объявление числовых констант
- 59 Преобразование типов
- 60 Новая возможность — выведение типа данных
- 45 Объявление переменной
- 63 Глава 3. Операторы
- 63 Арифметика
- 63 Простейшие операторы
- 64 Порядок выполнения операторов
- 65 Оператор присваивания
- 65 Оператор инкремента
- 66 Логично ли логическое сравнение
- 67 Сравнение чисел с плавающей точкой
- 68 Составные логические операторы
- 69 Тип выражения
- 69 Вычисление типа операции
- 71 Типы при присваивании
- 63 Арифметика
- 73 Глава 4. Управление потоком выполнения
- 74 Управление потоком выполнения
- 74 Оператор if
- 77 Инструкция else
- 78 Как избежать else
- 78 Вложенные операторы if
- 81 Конструкция switch
- 83 Циклы
- 83 Цикл while
- 88 Цикл do…while
- 88 Операторы break и continue
- 89 Цикл без счетчика
- 93 Правила области видимости
- 93 Цикл for
- 94 Пример
- 94 Зачем нужны разные циклы
- 95 Вложенные циклы
- 96 Оператор goto
- 74 Управление потоком выполнения
- 99 Глава 5. Коллекционирование
- 99 Массивы C#
- 99 Зачем нужны массивы
- 100 Массив фиксированного размера
- 102 Массив переменного размера
- 105 Конструкция foreach
- 106 Сортировка массива объектов
- 109 Использование var для массивов
- 110 Коллекции C#
- 111 Синтаксис коллекций
- 111 Классы коллекций C#
- 111 Понятие <T>
- 112 Обобщенные коллекции
- 112 Использование списков
- 115 Использование словарей
- 117 Новинка: инициализаторы массивов и коллекций
- 117 Инициализация массивов
- 117 Инициализация коллекций
- 118 Новинка: использование множеств
- 122 Не используйте старые коллекции
- 99 Массивы C#
- 123 Глава 6. Работа со строками в C#
- 124 Неизменяемость строк
- 125 Основные операции над строками
- 126 Сравнение строк
- 126 Метод Compare()
- 129 Сравнение без учета регистра
- 129 Изменение регистра
- 130 Отличие строк в разных регистрах
- 130 Преобразование символов строки в символы верхнего или нижнего регистра
- 131 Цикл по строке
- 131 Поиск в строках
- 132 Как искать
- 132 Пуста ли строка
- 132 Получение введенной пользователем информации
- 133 Удаление пробельных символов
- 133 Анализ числового ввода
- 136 Обработка последовательности чисел
- 137 Объединение массива строк в одну строку
- 138 Управление выводом программы
- 138 Использование методов Trim()и Pad()
- 140 Использование функции конкатенации
- 142 Использование функции Split()
- 142 Форматирование строки
- 146 StringBuilder: эффективная работа со строками
- 149 ЧАСТЬ III. ИСПОЛЬЗОВАНИЕ ОБЪЕКТОВ
- 151 Глава 7. Немного о классах
- 151 Классы и объекты
- 152 Определение класса
- 153 Что такое объект
- 153 Доступ к членам объекта
- 154 Пример объектно-основанной программы
- 156 Отличие между объектами
- 156 Ссылки
- 158 Классы, содержащие классы
- 159 Статические члены класса
- 160 Определение константных членов-данных
- 151 Классы и объекты
- 161 Глава 8. Методы методов
- 161 Определение и использование метода
- 162 Использование методов в ваших программах
- 169 Аргументы метода
- 169 Передача аргументов методу
- 170 Передача методу нескольких аргументов
- 171 Соответствие определений аргументов их использованию
- 172 Перегрузка метода
- 173 Реализация аргументов по умолчанию
- 175 Передача в метод типов-значений
- 180 Возврат значений из метода
- 181 Возврат значения оператором return
- 182 Возврат значения посредством передачи по ссылке
- 182 Когда какой способ передачи использовать
- 183 Определение метода без возвращаемого значения
- 187 Глава 9. Пару слов об этом
- 187 Передача объекта в метод
- 189 Определение методов
- 189 Определение статического метода
- 190 Определение метода экземпляра
- 192 Полное имя метода
- 193 Обращение к текущему объекту
- 194 Ключевое слово this
- 195 Когда this используется явно
- 197 Что делать при отсутствии this
- 199 Новинка: методы расширения
- 203 Глава 10. Что такое объектно-ориентированное программирование
- 203 Объектно-ориентированная концепция № 1: абстракция
- 204 Приготовление блюд с помощью функций
- 204 Приготовление «объектно-ориентированных» блюд
- 204 Объектно-ориентированная концепция № 2: классификация
- 205 Зачем нужна классификация
- 206 Объектно-ориентированная концепция № 3: удобный интерфейс
- 206 Объектно-ориентированная концепция № 4: управление доступом
- 207 Поддержка объектно-ориентированных концепций в C#
- 203 Объектно-ориентированная концепция № 1: абстракция
- 209 ЧАСТЬ IV. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
- 211 Глава 11. Класс — каждый сам за себя
- 211 Ограничение доступа к членам класса
- 212 Пример программы с использованием открытых членов
- 215 Прочие уровни безопасности
- 215 Зачем нужно управление доступом
- 216 Методы доступа
- 217 Пример управления доступом
- 222 Определение свойств класса
- 224 Новинка: дайте компилятору написать свойства за вас
- 225 Методы и уровни доступа
- 225 Конструирование объектов посредством конструкторов
- 225 Конструкторы, предоставляемые C#
- 227 Конструктор по умолчанию
- 228 Создание объектов
- 230 Выполнение конструктора в отладчике
- 233 Непосредственная инициализация объекта
- 233 Конструирование с инициализаторами
- 234 Новинка: инициализация объекта без конструктора
- 235 Перегрузка конструкторов
- 238 Устранение дублирования конструкторов
- 242 Фокусы с объектами
- 211 Ограничение доступа к членам класса
- 243 Глава 12. Наследование
- 243 Наследование класса
- 245 Зачем нужно наследование
- 246 Более сложный пример наследования
- 249 ЯВЛЯЕТСЯ или СОДЕРЖИТ
- 249 Отношение ЯВЛЯЕТСЯ
- 250 Доступ к BankAccount через содержание
- 251 Отношение СОДЕРЖИТ
- 251 Когда использовать отношение ЯВЛЯЕТСЯ, и когда — СОДЕРЖИТ
- 252 Поддержка наследования в C#
- 252 Изменение класса
- 253 Неверное преобразование времени выполнения
- 253 Ключевые слова is и as
- 255 Класс object
- 256 Наследование и конструктор
- 256 Вызов конструктора по умолчанию базового класса
- 257 Передача аргументов конструктору базового класса
- 259 Указание конкретного конструктора базового класса
- 260 Обновленный класс BankAccount
- 265 Глава 13. Полиморфизм
- 265 Перегрузка унаследованного метода
- 266 Простейший случай перегрузки метода
- 266 Различные классы, различные методы
- 267 Сокрытие метода базового класса
- 271 Вызов методов базового класса
- 273 Полиморфизм
- 274 Что неверно в стратегии использования объявленного типа
- 275 Использование is для полиморфного доступа к скрытому методу
- 276 Объявление метода виртуальным
- 279 Трюк «один за всех, все за одного»
- 279 Визитная карточка класса: метод ToString()
- 279 Абстракционизм в C#
- 280 Разложение классов
- 284 Голая концепция, выражаемая абстрактным классом
- 284 Как использовать абстрактные классы
- 286 Создание абстрактных объектов невозможно
- 287 Опечатывание класса
- 265 Перегрузка унаследованного метода
- 289 Глава 14. Интерфейсы
- 289 Что значит МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
- 290 Что такое интерфейс
- 291 Реализация интерфейса
- 292 Именование интерфейсов
- 292 Зачем в C# включены интерфейсы
- 292 Наследование и реализация интерфейса
- 293 Преимущества интерфейсов
- 294 Использование интерфейсов
- 294 Тип, возвращаемый методом
- 294 Базовый тип массива или коллекции
- 295 Более общий тип ссылки
- 295 Использование предопределенных типов интерфейсов C#
- 296 Пример программы, использующей отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК
- 296 Создание собственного интерфейса
- 297 Реализация интерфейса IComparable<T>
- 298 Сборка воедино
- 302 Унификация иерархий классов
- 305 Что скрыто за интерфейсом
- 307 Наследование интерфейсов
- 308 Использование интерфейсов для внесения изменений в объектно-ориентированные программы
- 309 Гибкие зависимости через интерфейсы
- 309 Абстрактный или конкретный? Когда следует использовать абстрактный класс, и когда — интерфейс
- 310 Осуществление отношения СОДЕРЖИТ с помощью интерфейсов
- 311 Шаблон проектирования Strategy
- 312 Чем полезны шаблоны
- 315 ЧАСТЬ V. C# 3.0
- 317 Глава 15. Делегирование событий
- 317 Звонок домой — проблема обратного вызова
- 318 Что такое делегат
- 320 Примеры передачи кода
- 320 Очень простой первый пример
- 322 Пример из реального мира
- 322 Обзор большего примера
- 322 Создание приложения
- 324 Знакомимся с кодом
- 326 Жизненный цикл делегата
- 328 Анонимные методы
- 329 События C#
- 329 Шаблон проектирования Observer
- 330 Что такое событие. Публикация и подписка
- 330 Как издатель оповещает о своих событиях
- 331 Как подписаться на событие
- 331 Как опубликовать событие
- 332 Как передать обработчику события дополнительную информацию
- 333 Рекомендованный способ генерации событий
- 334 Как наблюдатели «обрабатывают» событие
- 335 Глава 16. Лямбда-выражения
- 335 Коллекции и задача «для каждого»
- 335 Новинка: применение лямбда-выражений
- 336 Способ «для каждого» в C#
- 337 Заготовка: данные для примеров
- 337 Несколько примеров с методом Find()
- 339 Выполнение действий: примеры с ForEach()
- 342 Лямбда-выражение на основе пользовательского делегата
- 343 Резюмируя примеры
- 343 Синтаксис лямбда-выражений
- 345 Применение лямбда-выражений для произвольного делегата
- 347 Глава 17. Выражения запросов
- 347 Обзор возможностей C# 3.0
- 348 Что же такое запрос
- 349 Почему важны запросы, интегрированные в язык
- 350 Общий вид запроса C#
- 350 Более пристальный взгляд на LINQ
- 351 Запросы в C# 3.0
- 352 Три самых важных оператора запроса
- 354 Что означает отложенное выполнение запроса
- 355 Немедленное выполнение запроса
- 355 Что могут запросы
- 356 Фильтрование
- 356 Пример 1: кто из заказчиков живет в Колорадо?
- 358 Выбор и группирование
- 358 Пример 2: последовательность чисел, увеличенных на 2
- 359 Пример 3: имя и телефонный номер каждого заказчика
- 359 Использование анонимных типов
- 361 Пример 4: преобразование чисел в слова
- 362 Пример 5: группирование имен по их первой букве
- 364 Пример 6: вывод некоторых групп
- 365 Пример 7: группирование товаров по категориям
- 366 Сортировка
- 367 Пример 8: упорядочение групп из примеров 5 и 6
- 367 Пример 9: сортировка в группах
- 368 Пример 10: еще одна двухуровневая сортировка
- 368 Пример 11: сортировка в убывающем порядке
- 369 Метод запроса с методами
- 370 Пример 12: написание запросов с методами вместо ключевых слов
- 370 О поездах для новичков
- 372 Передышка для «стариков» закончена
- 372 Обобщенные методы
- 372 Что внутри Where()
- 373 Пример 13: имя и телефонный номер каждого заказчика
- 374 Подсчет, суммирование, усреднение и прочее
- 374 Пример 14: подсчет типов товара на складе
- 374 Пример 15: суммирование элементов массива
- 375 Пример 16: суммарная стоимость заказа
- 375 Пример 17: вычисление факториала 9
- 376 Работа с объектами как с коллекциями
- 377 ЧАСТЬ VI. ВЕЛИКОЛЕПНЫЕ ДЕСЯТКИ
- 379 Глава 18. Десять наиболее распространенных ошибок компиляции
- 379 The name ‘memberName’ does not exist in the class or namespace ‘className’
- 381 Cannot implicitly convert type ‘x’ into ‘y’
- 383 ‘className.memberName’ is inaccessible due to its protection level
- 384 Use of unassigned local variable ‘n’
- 384 Unable to copy the file ‘programName.exe’ to ‘programName.exe’. The process cannot
- 385 ‘subclassName.methodName’ hides inherited member ‘baseclassName.methodName’. Use the new keyword if hiding was intended
- 386 ‘subclassName’ : cannot inherit from sealed class ‘baseclassName’
- 386 ‘className’ does not implement interface member ‘methodName’
- 387 ‘methodName’ : not all code paths return a value
- 388 ] expected
- 389 ЧАСТЬ VII. ДОПОЛНИТЕЛЬНЫЕ ГЛАВЫ
- 391 Глава 19. Пространства имен и библиотеки
- 391 Разделение одной программы на несколько исходных файлов
- 393 Разделение единой программы на сборки
- 393 Выполнимый файл или библиотека
- 393 Сборки
- 394 Выполнимые файлы
- 394 Библиотеки классов
- 395 Объединение классов в библиотеки
- 395 Создание проекта библиотеки классов
- 396 Создание автономной библиотеки классов
- 396 Добавление второго проекта к существующему решению
- 398 Создание классов для библиотеки
- 398 Использование драйвера для тестирования библиотеки
- 399 Использование библиотеки классов в программе
- 400 Дополнительные ключевые слова для управления доступом
- 400 internal: строим глазки ЦРУ
- 402 protected: поделимся с подклассами
- 404 protected internal: более изощренная защита
- 405 Размещение классов в пространствах имен
- 406 Объявление пространств имен
- 408 Пространства имен и доступ
- 409 Использование полностью квалифицированных имен
- 410 Директива using
- 411 Пример использования полностью квалифицированных имен
- 415 Глава 20. Эти исключительные исключения
- 415 Старый способ обработки ошибок
- 417 Возврат индикатора ошибки
- 421 Чем плохи коды ошибок
- 422 Использование механизма исключений для сообщения об ошибках
- 424 О try-блоках
- 424 О cacth-блоках
- 424 О finally-блоках
- 425 Что происходит при генерации исключения
- 427 Генерация исключений
- 427 Для чего нужны исключения
- 427 Пример
- 429 Что делает этот пример «исключительным»
- 430 Трассировка стека
- 431 Использование нескольких catch-блоков
- 433 Планирование стратегии обработки ошибок
- 433 Вопросы, помогающие при планировании
- 434 Советы по написанию кода с хорошей обработкой ошибок
- 436 Анализ возможных исключений метода
- 438 Как выяснить, какие исключения генерируются теми или иными методами
- 438 Последний шанс перехвата исключения
- 415 Старый способ обработки ошибок
- 441 Глава 21. Рыбалка в потоке
- 441 Где водится рыба: файловые потоки
- 441 Потоки
- 442 Читатели и писатели
- 443 Использование StreamWriter
- 444 Пример использования потока
- 446 Как это работает
- 449 Наконец-то мы пишем!
- 450 Использование конструкции using
- 453 Использование StreamReader
- 457 Еще о читателях и писателях
- 458 Прочие виды потоков
- 441 Где водится рыба: файловые потоки
- 461 Глава 22. Значения и ссылки
- 461 Структуры C# и их отличия от классов
- 462 Структуры C#
- 463 Конструктор структуры
- 464 Методы структур
- 465 Пример применения структуры
- 468 Когда использовать структуры, а когда — классы
- 468 Предопределенные типы структур
- 469 Перечисления — группировка именованных констант
- 469 Унификация системы типов
- 472 Упаковка типов-значений
- 472 Как избежать упаковки и распаковки
- 461 Структуры C# и их отличия от классов
- 475 Глава 23. Использование интерфейса Visual Studio
- 475 Окна, окна, окна…
- 476 Настройка расположения окон
- 476 Состояния окон
- 478 Сокрытие окон
- 479 Перестановка окон
- 481 Наложение окон
- 482 Дополнительные возможности Visual Studio
- 482 Просмотр диаграммы классов
- 482 Рефакторинг кода
- 484 Стандартные заготовки кода
- 484 Автоматизация Visual Studio при помощи макросов
- 485 Работа с Solution Explorer
- 486 Как упростить жизнь с помощью проектов и решений
- 487 Отображение проекта
- 490 Навигация по исходному тексту
- 491 Добавление класса
- 492 Завершение демонстрационной программы
- 495 Преобразование классов в программу
- 496 Помогите мне!
- 496 Отладка
- 497 Жучки в программе: а дустом не пробовали?
- 498 Пошаговая отладка
- 502 Главное — вовремя остановиться
- 504 Стек вызовов
- 508 Я сделал это!
- 509 Глава 24. Обобщенность
- 509 Обобщенность в C#
- 509 Обобщенные классы безопасны
- 510 Обобщенные классы эффективны
- 511 Создание собственного обобщенного класса
- 511 Очередь с приоритетами
- 516 Распаковка пакета
- 517 Метод Main()
- 518 Написание обобщенного кода
- 519 Обобщенная очередь с приоритетами
- 521 Использование простого необобщенного класса фабрики
- 523 Незавершенные дела
- 525 Обобщенные методы
- 527 Обобщенные методы в необобщенных классах
- 528 Обобщенные методы в обобщенных классах
- 528 Ограничения для обобщенного метода
- 529 Обобщенные интерфейсы
- 529 Объявление обобщенного интерфейса
- 529 Написание класса, реализующего обобщенный интерфейс
- 530 Интерфейсы на примере
- 533 Обобщенное делегирование
- 509 Обобщенность в C#
- 537 Глава 25. Работа с коллекциями
- 537 Обход каталога файлов
- 543 Написание собственного класса коллекции: связанный список
- 544 Пример связанного списка
- 553 Зачем нужен связанный список
- 553 Обход коллекций: итераторы
- 554 Доступ к коллекции: общая задача
- 555 Использование foreach
- 557 Обращение к коллекциям как к массивам: индексаторы
- 557 Формат индексатора
- 557 Пример программы с использованием индексатора
- 561 Блок итератора
- 566 Итерация месяцев
- 567 Что такое коллекция
- 568 Синтаксис итератора
- 569 Блоки итераторов произвольного вида и размера
- 572 Где надо размещать итераторы
- 581 Предметный указатель
Инструкция как скачать книгу Чак Сфер, Стефан Рэнди Дэвис: C# 2008 для "чайников" в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Рейтинг книги:
3 голоса
1705