Руководство по программированию на C#
|
Компиляция на двух языках из MSDN Visual Studio
|
|
Методическое пособие для занятий по информатике на физфаке ЮФУ
|
|
Фомин Г.В.
|
|
|
Оглавление
Оглавление 2
C# Programming Guide 9
Inside a C# Program 9
Hello World -- Your First Program 9
Руководство по программированию на C# 9
Структура программы C# 9
Hello World – Создаем первую программу 9
General Structure of a C# Program 12
Общая структура программы на C# 12
Main() and Command Line Arguments 13
Overview 13
Main() и аргументы командной строки 13
Общие сведения 13
Command-Line Arguments 14
How to: Display Command Line Arguments 18
Отображение аргументов командной строки 19
How to: Access Command-Line Arguments Using foreach 20
Доступ к аргументам командной строки с помощью оператора "foreach" 20
Main() Return Values 21
Значения, возвращаемые методом Main() 21
Types 24
Data Types Overview 24
Типы 24
Общие сведения о типах данных 24
Casting 25
Приведение 26
Boxing and Unboxing 27
Упаковка-преобразование и распаковка-преобразование 27
How to: Convert a byte Array to an int 32
Преобразование массива байтов в значение типа "int" 32
How to: Convert a string to an int 34
Преобразование строки в значение типа "int" 34
How to: Convert Hexadecimal Strings 36
Преобразование шестнадцатеричных строк 36
Arrays 38
Array Overview 38
Массивы 38
Общие сведения о массивах 38
Arrays as Objects 39
Массивы как объекты 39
Single-Dimensional Arrays 40
Одномерные массив 40
Multidimensional Arrays 41
Многомерные массивы 41
Jagged Arrays 42
Массивы массивов 42
Using foreach with Arrays 45
Использование оператора foreach с массивами 45
Passing Arrays as Parameters 46
Передача массивов в качестве параметров 46
Passing Arrays Using ref and out 50
Передача массивов при помощи параметров ref и out 50
Implicitly Typed Arrays 53
Неявно типизированные массивы 53
Strings 55
Using Strings 55
Строки 55
Использование строк 55
How to: Parse Strings Using the Split Method 63
Анализ строк с помощью метода разделения 63
How to: Search Strings Using String Methods 64
Навигация по содержимому строки с помощью строковых методов 64
How to: Search Strings Using Regular Expressions 65
Анализ строк с помощью регулярных выражений 66
How to: Join Multiple Strings 68
Объединение нескольких строк 69
How to: Modify String Contents 70
Изменение содержимого строки 70
How to: Determine Whether a String Contains a Numeric Value 71
Определение наличия числового значения в строке 71
Encoding Base Types 73
Базовые типы кодировки 74
Formatting Types 76
Formatting Overview 76
Типы форматирования 76
Общие сведения о форматировании 76
Composite Formatting 82
Составное форматирование 82
Numeric Format Strings 88
Строки числовых форматов 88
.NET Framework Regular Expressions 112
Регулярные выражения в .NET Framework 112
Regular Expressions as a Language 113
Регулярные выражения как язык 113
Character Escapes 114
Escape-знаки 114
How to: Perform String Manipulations by Using Basic String Operations 116
Example 116
Выполнение действия со строками с помощью основных строковых операций 116
Пример 116
Parsing Strings 120
Parsing Numeric Strings 120
Разбор строк 120
Разбор числовых строк 120
Statements, Expressions, and Operators 123
Statements 123
Операторы и выражения 123
Операторы 123
Expressions 124
Выражения 124
Operators 126
Операторы 126
Anonymous Functions 130
Анонимные функции 130
Overloadable Operators 143
Перегружаемые операторы 143
Conversion Operators 144
Операторы преобразования 144
How to: Use Operator Overloading to Create a Complex Number Class 154
Перегрузка операторов для реализации класса комплексных чисел 154
Guidelines for Overloading Equals() and Operator == 155
Правила переопределения метода Equals и оператора равенства (==) 155
Objects, Classes and Structs 162
Overview 162
Объекты, классы и структуры 162
Общие сведения 164
Члены 164
Доступность 164
Наследование 165
Интерфейсы 165
Универсальные типы 165
Статические типы 165
Вложенные типы 165
Разделяемый класс 165
Инициализаторы объектов 165
Анонимные типы 165
Методы расширения 165
Неявно типизированные локальные переменные 165
Objects 166
Объекты 166
Classes 169
Классы 170
Structs 175
Структуры 175
Inheritance 180
Наследование 180
Interfaces 212
Интерфейсы 212
Members 225
Члены 226
Methods 227
Методы 228
Constructors 243
Конструкторы 243
Fields 273
Поля 273
Constants 275
Константы 275
Nested Types 275
Вложенные типы 276
Access Modifiers 277
Модификаторы доступа 277
Partial Classes and Methods 279
Разделяемые классы и методы 280
Static Classes and Static Class Members 289
Статические классы и члены статических классов 289
How to: Know the Difference Between Passing a Struct and Passing a Class Reference to a Method 296
Определение различия между передачей структуры и ссылки класса в метод 296
Anonymous Types 297
Анонимные типы 297
Extension Methods 302
Методы расширения 302
Implicitly Typed Local Variables 305
Неявно типизированные локальные переменные 305
Properties 309
Example 309
Свойства 309
Пример 309
Output 310
Properties Overview 310
Результат 310
Общие сведения о свойствах 310
Using Properties 311
Использование свойств 312
Interface Properties 326
Свойства интерфейса 326
Asymmetric Accessor Accessibility 329
Асимметричные методы доступа 329
How to: Declare and Use Read/Write Properties 335
Объявление и использование свойств чтения и записи 335
Auto-Implemented Properties 338
Автоматически реализуемые свойства 338
How to: Implement a Lightweight Class with Auto-Implemented Properties 339
Реализация облегченного класса с автоматически реализуемыми свойствами 339
Indexers 340
Indexers Overview 340
Индексаторы 340
Общие сведения об индексаторах 340
Using Indexers 341
Использование индексаторов 341
Indexers in Interfaces 346
Индексаторы в интерфейсах 346
Comparison Between Properties and Indexers 350
Сравнение свойств и индексаторов 350
Delegates 351
Delegates Overview 351
Делегаты 351
Общие сведения о делегатах 351
Using Delegates 352
Использование делегатов 352
Delegates with Named vs. Anonymous Methods 356
Делегаты с именованными методами и делегаты с анонимными методами 356
When to Use Delegates Instead of Interfaces 359
Использование делегатов вместо интерфейсов 359
Covariance and Contravariance in Delegates 360
Ковариация и контрвариация в делегатах 360
How to: Combine Delegates (Multicast Delegates) 362
Объединение делегатов (многоадресные делегаты) 362
How to: Declare, Instantiate, and Use a Delegate 363
Объявление, создание экземпляра и использование делегата 363
Events 367
Events Overview 367
События 367
Общие сведения о событиях 367
How to: Subscribe to and Unsubscribe from Events 368
Подписка и отмена подписки на события 368
How to: Publish Events that Conform to .NET Framework Guidelines 371
Публикация событий, соответствующих рекомендациям .NET Framework 371
How to: Raise Base Class Events in Derived Classes 376
Создание событий базового класса в производных классах 376
How to: Raise and Consume Events 382
Вызов и прием событий 382
How to: Implement Interface Events 388
Реализация событий интерфейса 388
How to: Use a Dictionary to Store Event Instances 393
Использование словаря для хранения экземпляров событий 393
Generics 396
Generics Overview 396
Универсальные шаблоны 396
Общие сведения об универсальных шаблонах 396
Introduction to Generics 397
Введение в универсальные шаблоны 397
Benefits of Generics 400
Преимущества универсальных шаблонов 400
Generic Type Parameters 402
Параметры универсального типа 403
Namespaces 404
Namespaces Overview 404
Пространства имен 404
Общие сведения о пространствах имен 404
Using Namespaces 405
Использование пространств имен 406
How to: Use the Namespace Alias Qualifier 412
Использование квалификатора псевдонима пространства имен 413
Nullable Types 415
Типы, допускающие значения null 415
Nullable Types Overview 416
Общие сведения о типах, допускающих значения null 416
Using Nullable Types 417
Использование типов, допускающих значение null 418
How to: Identify a Nullable Type 425
Идентификация типа, допускающего значение null 425
Unsafe Code and Pointers 427
Unsafe Code Overview 427
Небезопасный код и указатели 427
Общие сведения о небезопасном коде 427
Fixed Size Buffers 428
Буферы фиксированного размера 429
Pointer types 431
Типы указателей 432
XML Documentation Comments 451
Recommended Tags for Documentation Comments 451
Комментарии XML-документации 451
Рекомендуемые теги для комментариев документации 451
How to: Use the XML Documentation Features 452
Использование XML-документации 452
Application Domains 456
Application Domains Overview 456
Домены приложений 456
Общие сведения о доменах приложений 456
Executing Code in Another Application Domain 457
Выполнение кода в другом домене приложения 457
Assemblies and the Global Assembly Cache 459
Assemblies Overview 459
Сборки и глобальный кэш сборок 459
Общие сведения о сборках 459
Attributes 460
Attribute Overview 460
Атрибуты 460
Общие сведения об атрибутах 460
Using Attributes 461
Использование атрибутов 462
How to: Create a C/C++ Union Using Attributes 463
Создание объединения C/C++ с помощью атрибутов 464
Common Attributes 465
Общие атрибуты 466
Exceptions and Exception Handling 472
Исключения и обработка исключений 472
Exceptions Overview 473
Общие сведения об исключениях 473
Using Exceptions 474
Использование исключений 475
Exception Handling 478
Обработка исключений 479
Creating and Throwing Exceptions 483
Создание и генерация исключений 483
Compiler-Generated Exceptions 486
Исключения, создаваемые компилятором 486
How to: Handle an Exception Using try/catch 487
Обработка исключений с помощью блока try-catch 487
How to: Execute Cleanup Code Using finally 488
Выполнение кода очистки с использованием блока finally 488
Interoperability 490
How to: Use Platform Invoke to Play a Wave File 490
Взаимодействие 490
Использование вызова неуправляемого кода для воспроизведения звукового файла 490
PlaySound 494
Threading 497
Overview 497
Создание потоков 497
Общие сведения 497
Using Threading 498
Использование потоков 498
Thread Synchronization 499
Синхронизация потоков 499
How to: Create and Terminate Threads 504
Создание и завершение потоков 504
How to: Synchronize a Producer and a Consumer Thread 508
Синхронизация потока-производителя и потока-потребителя 508
How to: Use a Thread Pool 517
Использование пула потоков 517
Reflection 521
Reflection Overview 521
Отражение 521
Общие сведения об отражении 521
C# DLLs 522
How to: Create and Use C# DLLs 522
Библиотеки C# 522
Создание и использование библиотек DLL на языке C# 522
Security 525
C# Specific Security Recommendations 525
Безопасность 525
Рекомендации по безопасности, касающиеся языка C# в отдельности 525
Consuming Unmanaged DLL Functions 526
To consume exported DLL functions 526
Использование неуправляемых функций DLL 526
Применение экспортированных функций DLL 526
A Closer Look at Platform Invoke 527
Подробный обзор вызова неуправляемого кода 527
Identifying Functions in DLLs 528
Идентификация функций в библиотеках DLL 528
Creating a Class to Hold DLL Functions 529
Создание класса, содержащего функции DLL 529
Creating Prototypes in Managed Code 530
Declaration Basics 530
Создание прототипов в управляемом коде 530
Основы описания 530
Adjusting the Definition 531
Настройка описания 531
Specifying an Entry Point 532
Задание точки входа 532
Calling a DLL Function 533
Passing Structures 533
Вызов функции DLL 533
Передача структур 533
File and Stream I/O 536
Basic File I/O 536
Файловый и потоковый ввод-вывод 536
Основы файлового ввода-вывода 536
Classes Used for File I/O 537
Классы, используемые в файловом вводе и выводе 537
Classes Used for Reading from and Writing to Streams 538
Классы, используемые для чтения и записи в поток 538
Common I/O Stream Classes 539
I/O and Security 539
Общие классы потокового ввода и вывода 539
Ввод-вывод и безопасность 539
How to: Create a Directory Listing 540
Создание списка каталогов 540
How to: Read and Write to a Newly Created Data File 542
Считывание из нового файла данных и запись в этот файл 542
How to: Copy Directories 543
Копирование каталогов 543
How to: Open and Append to a Log File 544
Открытие файла журнала и добавление в него данных 544
How to: Write Text to a File 545
Запись текста в файл 545
How to: Read Text from a File 546
Считывание текста из файла 546
How to: Read Characters from a String 548
Считывание символов из строки 548
How to: Write Characters to a String 549
Запись символов в строку 549
How to: Add or Remove Access Control List Entries 550
Добавление или удаление записей списка управления доступом 550
How to: Compress Files 553
Сжатие файлов 553
Composing Streams 555
Создание потоков 555
Creating a Writer 557
Создание класса Writer 557
Collections and Data Structures 558
Коллекции и структуры данных 558
Defining Collections 559
Определение коллекций 559
Selecting a Collection Class 561
Выбор класса коллекции 561
Introduction to Solutions, Projects, and Items 563
Containers: Solutions and Projects 563
Items: Files, References, Data Connections 563
Знакомство с решениями, проектами и элементами 563
Контейнеры: проекты и решения 563
Элементы: файлы, ссылки, подключения к данным 563
Solutions as Containers 564
Решения как контейнеры 564
Solutions 565
Решения 565
Projects as Containers 566
Проекты как контейнеры 566
Using the Visual C# IDE 569
Introduction to the IDE 569
Использование интегрированной среды разработки Visual C# 569
Введение в интегрированную среду разработки 569
Visual C# Tools 570
Средства Visual C# 570
Доступ к средствам в интегрированной среде разработки 571
Solution Explorer and Project Designer 572
Настройка интегрированной среды разработки 572
Creating a Project 573
Creating a New Project 573
Создание проекта 573
Создание нового проекта 573
What's in Your Project? 576
Состав проекта 576
Modifying Project Properties 578
Изменение свойств проекта 578
Designing a User Interface 582
Adding Controls 582
Создание пользовательского интерфейса 582
Добавление элементов управления 582
Setting Properties 584
Handling Events 584
Задание свойств 584
Обработка событий 584
Editing Code 585
IntelliSense 585
Редактирование кода 585
IntelliSense 585
Refactoring 588
Code Snippets 588
Wavy underlines 588
Оптимизация кода 588
Фрагменты кода 588
Подчеркивание волнистой линией 588
Readability Aids 589
Средства обеспечения удобочитаемости кода 589
Navigating and Searching 590
Class View 590
Навигация и поиск 590
Представление классов 590
CTRL-TAB Navigation 591
Навигация CTRL-TAB 591
Navigation Bars 592
Панели переходов 592
Find in Files 593
Object Browser 593
Navigation Stacks 593
Поиск в файлах 593
Обозреватель объектов 593
Стеки навигации 593
Building and Debugging 594
Build Settings 594
Build Errors 594
Построение и отладка 594
Параметры построения 594
Ошибки построения 594
Release vs. Debug configurations 596
Debugging 596
Сравнение отладочной и выпускной конфигураций 596
Отладка 596
Modeling and Analyzing Code 599
Class Designer 599
Моделирование и анализ кода 599
Конструктор классов 599
Object Browser 601
Обозреватель объектов 601
Metadata as Source: 602
Code Analysis for Managed Code 602
Метаданные как источник 602
Анализ управляемого кода 602
Adding and Editing Resources 603
Adding Resources to Projects 603
Добавление и редактирование ресурсов 603
Добавление ресурсов в проекты 603
Editing Resources 604
Редактирование ресурсов 604
Compiling Resources into Assemblies 605
Accessing Resources at Run-Time 605
Компиляция ресурсов в сборки 605
Доступ к ресурсам во время выполнения 605
Getting Help 606
Online vs. Local Help 606
Получение справки 606
Локальная справка и справка в Интернете 606
F1 Search 607
Search 607
Поиск по F1 607
Поиск 607
Index 608
Table of Contents 608
Указатель 608
Содержание 608
How Do I 609
Dynamic Help 609
Samples 609
Инструкции 609
Динамическая справка 609
Примеры 609
Refactoring 610
Multi-Project Refactoring 610
Preview Changes Dialog Box 610
Error-Tolerant Refactoring 610
Оптимизация 610
Многопроектная оптимизация 610
Диалоговое окно "Предварительный просмотр изменений" 610
Допускающая наличие ошибок оптимизация 610
Extract Method 611
Извлечение метода 611
Rename 613
Переименовать 613
Promote Local Variable to Parameter 616
Превращение локальной переменной в параметр 616
Заметки 617
Code Colorization 619
Tokens 619
Разметка кода цветом 619
Лексемы 619
Contextual Keywords 620
Brace Matching Colorization 620
Bold Colorization 620
Контекстные ключевые слова 620
Разметка цветом для обозначения парности фигурных скобок 620
Разметка цветом и жирным шрифтом 620
Highlight Colorization 621
Разметка цветом и выделение цветным фоном 621
|