ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2025

Просмотров: 3139

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Предметный указатель

507

Поиск

509

Дополнительные возможности

510

Автоперечисление членов

511

Отладка

512

Жучки в программе: а дустом не пробовали?

512

Пошаговая отладка

514

Главное — вовремя остановиться

517

Стек вызовов

520

Я сделал это!

523

Глава 22. С# по дешевке

525

Работа без сети — но не без платформы .NET

526

Получение бесплатных компонентов

526

Обзор цикла разработки

527

Программирование на С# в программе SharpDevelop

528

Изучение SharpDevelop

528

Сравнение возможностей SharpDevelop и Visual Studio

529

Получение справочной информации

530

Настройка программы SharpDevelop

531

Добавление инструмента для запуска отладчика

531

Запуск отладчика из SharpDevelop

532

Отсутствующие возможности отладчика

534

Программирование на С# в TextPad

534

Создание класса документов . CS для языка С#

537

Добавление собственных инструментов: Build С# Debug

538

Настройка инструмента для компиляции финальной версии

540

Объяснение опций настройки инструментов Debug и Release

541

Работа над ошибками компиляции

545

Настройка остальных инструментов

545

Тестирование с помощью программы NUnit

548

Запуск программы NUnit

548

Тестирование

549

Написание тестов NUnit

550

Исправление ошибок в проверяемой программе

557

Написание исходного текста Windows Forms без Form Designer

559

Это всего лишь код

559

Работа в стиле визуального инструмента

560

Частичные классы

561

Самостоятельное написание

562

Убедитесь, что пользователи смогут запустить вашу программу

563

Visual Studio для бедных

564

Предметный указатель

565

Содержание

15


Часть VI. Великолепные десятки

373

Глава 16. Десять наиболее распространенных ошибок компиляции

375

The name 'memberName' does not exist in the class or namespace 'className'

375

Cannot implicitly convert type 'x' into 'y'

377

'className.memberName' is inaccessible due to its protection level

379

Use of unassigned local variable 'n'

380

Unable to copy the file 'programName.exe' to 'programName.exe'. The process cannot...

380

'subclassName.methodName' hides inherited member 'baseclassName.methodName'.

 

Use the new keyword if hiding was intended

381

'subclassName' : cannot inherit from sealed class 'baseclassName'

382

'className' does not implement interface member 'methodName'

383

'methodName' : not all code paths return a value

383

} expected

384

Глава 17. Десять основных отличий С# и С++

385

Отсутствие глобальных данных и функций

386

Все объекты размещаются вне кучи

386

Переменные-указатели запрещены

387

Обобщенные классы С# и шаблоны С++

387

Никаких включаемых файлов

388

Не конструирование, а инициализация

388

Корректное определение типов переменных

389

Нет множественного наследования

389

Проектирование хороших интерфейсов

389

Унифицированная система типов

389

Часть VII. Дополнительные главы

391

Глава 18. Эти исключительные исключения

393

Старый способ обработки ошибок

393

Возврат индикатора ошибки

395

Чем плохи коды ошибок

398

Использование механизма исключений для сообщения об ошибках

400

Пример

402

Создание собственного класса исключения

405

Использование нескольких catch-блоков

406

Как исключения протекают сквозь пальцы

408

Регенерация исключения

411

Как реагировать на исключения

412

Перекрытие класса Exception

413

Глава 19. Работа с файлами и библиотеками

419

Разделение одной программы на несколько исходных файлов

419

Разделение единой программы на сборки

421

Объединение исходных файлов в пространства имен

422

Содержание

13


Стефан Р. Дэвис (Stephen R. Davis) (более известный по второму имени — Ренди) живет со своей женой и сыном недалеко от Далласа, штат Техас. Он и его семейство на­ писали множество книг, включая С++ для чайников (С++ For Dummies) и С++ Weekend Crash Course. Стефан работает в фирме L-3 Communications.

Чак Сфер (Chuck Sphar) ушел из подразделения Microsoft, работающего над до­ кументацией по языку С++, в 1997 году после шести лет тяжелой работы главным тех­ ническим писателем. Две его последние публикации были посвящены объектноориентированному программированию для Мае и библиотеке классов MFC. В настоя­ щее время он заканчивает роман о древнем Риме ( a g a i n s t r o m e . c o m ) и работает с программированием в среде .NET. Пожелания и мелкие замечания можно отсылать Чаку по адресу c s h a r p @ c h u c k s p h a r . com.

Пэм (Рат) и маме — Чак Сфер.

Я хотел бы поблагодарить Клодет Мур (Claudette Moore) и Дебби Маккенна (Debbie McKenna), которые заставили меня написать эту книгу. Я также хочу поблагодарить Ренди Дэвиса (Randy Davis) за его готовность передать своего "младенца" парню, кото­ рого он не знал. Я считаю, что это очень тяжело, и надеюсь, что был достаточно коррек­ тен, дополняя и расширяя первое издание его превосходной книги.

Должен также выразить благодарность прекрасным людям в издательстве Wiley, и в ча­ стности редактору Кейти Фелтман (Katie Feltman) и редактору проекта Киму Даросетту (Kim Darosett). Ким сумел поддержать меня в новой ипостаси — автора для чайников. Я также хотел бы поблагодарить Криса Боуера (Chris Bower) за его техническую консуль­ тацию и превосходное знание языка С#, Джона Эдвардса (John Edwards), которому книга обязана целостностью и согласованностью, а также художникам, специалистам по рекламе и другим людям, создавшим из моих файлов реальную книгу.

Выражаю сердечную благодарность Пэм за ее постоянную поддержку и помощь (much enabling). Она мне помогает во всем.

Чак Сфер.

Издательский дом "Вильяме" благодарит Ерофеева Сергея и Кущенко Сергея за боль­ шой вклад в подготовку издания книги.

Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые дру­ гие замечания, которые вам хотелось бы высказать в наш адрес.

Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумаж­ ное или электронное письмо, либо просто посетить наш Web-сервер и оставить свои за­ мечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравит­ ся или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас.

Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязатель­ но учтем его при отборе и подготовке к изданию последующих книг. Наши координаты:

E-mail: inf o@williamspublishing. com

WWW:http: //www. williamspublishing . com

Информация для писем из:

России: 115419, Москва, а/я 783 Украины: 03150, Киев, а/я 152


Введение

Язык программирования С# является мощным, относительно новым потомком более ранних языков С, С++ и Java. Программирование на нем доставляет много удовольствия, в чем можно будет убедиться при работе с этой книгой.

Язык С# был создан Microsoft как главная часть ее инициативы .NET. Возможно, из соображений политики компания Microsoft направила спецификации языка С# в комитет международных стандартов ассоциации ЕСМА (произносится как "эк-ма") летом 2000 года, задолго до внедрения платформы .NET. Теоретически любая компания может раз­ работать свою собственную версию языка С#, предназначенную для работы в любой операционной системе и на любой машине, большей, чем калькулятор.

Когда вышло первое издание настоящей книги, компилятор языка С# Microsoft был единственным, и ее инструментальный пакет Visual Studio .NET предлагал единственную возможность программирования на языке С#. С тех пор, однако, Visual Studio претерпел два существенных изменения — появилась версия Visual Studio 2003 и, совсем недавно, Visual Studio 2005. И, по крайней мере, еще два игрока вступили в игру С#.

В настоящее время можно писать и компилировать программы на языке С# на мно­ жестве машин, работающих под управлением Unix, при помощи реализаций Mono или Portable .NET платформы .NET и языка С#.

Mono (www. g o - m o n o . com) является программным проектом с открытым исход­ ным кодом, финансируемым компанией Novell Corporation. Версия 1.1.8 вышла В июне 2005 года. Хотя проект Mono и отстает от платформы .NET компании Mi­ crosoft (версию 1.1 Microsoft выпустила пару лет назад), он быстро развивается.

Проект Portable .NET фирм Southern Storm Software и DotGNU (www. d o t g n u . o r g / p n e t . h t m l ) также является проектом с открытым исходным кодом. Во время написания этой книги текущей версией проекта Portable .NET была 0.7.0.

Оба проекта предназначены для выполнения программ С# в Windows и различных операционных системах семейства Unix, включая Linux и Macintosh компании Apple. Ко­ гда писалась эта книга, проект Portable .NET работал на большем количестве платформ, в то время как проект Mono гордится более полной реализацией платформы .NET. Так что выбор между ними может быть затруднен, в зависимости от вашего проекта, плат­ формы и целей. (Книги по программированию для этих платформ уже становятся дос­ тупны. Посетите сайт www. a m a z o n . com.)

Программное обеспечение с открытым исходным кодом создается сотрудни­ чающими группами программистов-добровольцев и обычно является бесплат­ ным для всех.

Переносимость языка С# и других языков платформы .NET выходит далеко за рамки настоящей книги. Но можно ожидать, что в течение нескольких лет программы С# для Windows, которые можно научиться создавать по этой книге, будут работать на различ­ ном аппаратном обеспечении и для всех типов операционных систем, что соответствует требованиям для языка Java компании Sun Microsystems — о работе на любой машине. Это, несомненно, хорошая вещь, даже для Microsoft. Переносимость — вопрос, над ко-


торым в настоящее время идет интенсивная работа, так что нет никаких сомнений, что все трудности и препятствия на пути к истинной универсальной переносимости языка С# будут преодолены. Но этот путь является уже не только путем Microsoft.

Однако в настоящий момент пакет Visual Studio компании Microsoft содержит наибо­ лее развитые версии языка С# и платформы .NET, а также набор инструментов к ним с богатыми возможностями для программирования.

Если вам нужен только С#, то в одной из дополнительных глав вы узнаете, как практически бесплатно написать код С#. (Вы потеряете множество удобств, включая отличные средства визуального дизайна, обеспечиваемые Visual Studio 2005, но сможете создавать код Windows и без них — в особенности такой про­ стой код, как рассматриваемый в этой книге.)

Хотя в версию 2.0 языка С# был внесен ряд изменений, в основном С# остается прак­ тически таким же, как и в предыдущей версии. В этой книге рассматриваются следую­ щие значительные нововведения.

S Блоки итераторов: итератор представляет собой объект, который позволяет пройти по всем элементам набора, или коллекции объектов. Сделать это можно было всегда, но С# 2.0 значительно упрощает использование итераторов. Коллек­ ции рассматриваются в главе 15, "Обобщенное программирование".

SОбобщенное программирование является важным нововведением! Новые воз­ можности позволяют создавать более обобщенный и гибкий код, что является мечтой любого программиста. Из главы 15, "Обобщенное программирование", вы

узнаете, как создавать более простой код с улучшенной безопасностью типов с помощью обобщенного программирования.

Оставляя в стороне более сложные нововведения, следует упомянуть о нескольких более простых элементах в соответствующих разделах книги. (Не нужно беспокоиться, если что-то в этом Введении вам непонятно. Все станет ясно в процессе чтения соответ­ ствующих глав книги.)

Цель книги заключается в объяснении языка программирования С#, но для реального написания программ необходима специальная среда кодирования. Мы уверены, что большинство читателей будет использовать Microsoft Visual Studio, хотя предусмотрены и другие варианты. Основывая книгу на Visual Studio, мы попытались сделать долю Visu­ al Studio минимально необходимой. Можно было бы просто сказать: "Запускайте свою программу каким угодно образом", но вместо этого мы говорим: "Запускайте свою про­ грамму С# в Visual Studio нажатием клавиши <F5>". Мы хотим, чтобы вы могли сосре­ доточиться на самом языке С#, а не на том, как работают простые вещи.

Вполне понятно, что многие читатели, если не большинство, захотят использовать С# для создания графических приложений Windows, поскольку язык С# является мощ­ ным средством разработки подобных программ, но это всего лишь одна из областей

20

Введение