Оглавление
Оглавление 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
Отображение аргументов командной строки 18
How to: Access Command-Line Arguments Using foreach 19
Доступ к аргументам командной строки с помощью оператора "foreach" 19
Main() Return Values 20
Значения, возвращаемые методом Main() 20
Types 22
Data Types Overview 22
Типы 22
Общие сведения о типах данных 22
Casting 23
Приведение 23
Boxing and Unboxing 24
Упаковка-преобразование и распаковка-преобразование 24
How to: Convert a byte Array to an int 29
Преобразование массива байтов в значение типа "int" 29
How to: Convert a string to an int 31
Преобразование строки в значение типа "int" 31
How to: Convert Hexadecimal Strings 33
Преобразование шестнадцатеричных строк 33
Arrays 35
Array Overview 35
Массивы 35
Общие сведения о массивах 35
Arrays as Objects 36
Массивы как объекты 36
Single-Dimensional Arrays 37
Одномерные массив 37
Multidimensional Arrays 38
Многомерные массивы 38
Jagged Arrays 39
Массивы массивов 39
Using foreach with Arrays 42
Использование оператора foreach с массивами 42
Passing Arrays as Parameters 43
Передача массивов в качестве параметров 43
Passing Arrays Using ref and out 47
Передача массивов при помощи параметров ref и out 47
Implicitly Typed Arrays 50
Неявно типизированные массивы 50
Strings 52
Using Strings 52
Строки 52
Использование строк 52
How to: Parse Strings Using the Split Method 58
Анализ строк с помощью метода разделения 58
How to: Search Strings Using String Methods 59
Навигация по содержимому строки с помощью строковых методов 59
How to: Search Strings Using Regular Expressions 60
Анализ строк с помощью регулярных выражений 60
How to: Join Multiple Strings 62
Объединение нескольких строк 62
How to: Modify String Contents 63
Изменение содержимого строки 63
How to: Determine Whether a String Contains a Numeric Value 64
Определение наличия числового значения в строке 64
Encoding Base Types 66
Базовые типы кодировки 66
Formatting Types 68
Formatting Overview 68
Типы форматирования 68
Общие сведения о форматировании 68
Composite Formatting 74
Составное форматирование 74
Numeric Format Strings 80
Строки числовых форматов 80
.NET Framework Regular Expressions 103
Регулярные выражения в .NET Framework 103
Regular Expressions as a Language 104
Регулярные выражения как язык 104
Character Escapes 105
Escape-знаки 105
How to: Perform String Manipulations by Using Basic String Operations 107
Example 107
Выполнение действия со строками с помощью основных строковых операций 107
Пример 107
Parsing Strings 111
Parsing Numeric Strings 111
Разбор строк 111
Разбор числовых строк 111
Statements, Expressions, and Operators 114
Statements 114
Операторы и выражения 114
Операторы 114
Expressions 115
Выражения 115
Operators 117
Операторы 117
Anonymous Functions 121
Анонимные функции 121
Overloadable Operators 133
Перегружаемые операторы 133
Conversion Operators 134
Операторы преобразования 134
How to: Use Operator Overloading to Create a Complex Number Class 141
Перегрузка операторов для реализации класса комплексных чисел 141
Guidelines for Overloading Equals() and Operator == 142
Правила переопределения метода Equals и оператора равенства (==) 142
Objects, Classes and Structs 146
Overview 146
Объекты, классы и структуры 146
Общие сведения 147
Члены 147
Доступность 147
Наследование 148
Интерфейсы 148
Универсальные типы 148
Статические типы 148
Вложенные типы 148
Разделяемый класс 148
Инициализаторы объектов 148
Анонимные типы 148
Методы расширения 148
Неявно типизированные локальные переменные 148
Objects 149
Объекты 149
Classes 151
Классы 151
Structs 155
Структуры 155
Inheritance 159
Наследование 159
Interfaces 179
Интерфейсы 179
Members 188
Члены 188
Methods 189
Методы 189
Constructors 202
Конструкторы 202
Fields 223
Поля 223
Constants 225
Константы 225
Nested Types 226
Вложенные типы 226
Access Modifiers 227
Модификаторы доступа 227
Partial Classes and Methods 229
Разделяемые классы и методы 229
Static Classes and Static Class Members 236
Статические классы и члены статических классов 236
How to: Know the Difference Between Passing a Struct and Passing a Class Reference to a Method 242
Определение различия между передачей структуры и ссылки класса в метод 242
Anonymous Types 243
Анонимные типы 243
Extension Methods 247
Методы расширения 247
Implicitly Typed Local Variables 249
Неявно типизированные локальные переменные 249
Properties 252
Example 252
Свойства 252
Пример 252
Output 253
Properties Overview 253
Результат 253
Общие сведения о свойствах 253
Using Properties 254
Использование свойств 254
Interface Properties 265
Свойства интерфейса 265
Asymmetric Accessor Accessibility 268
Асимметричные методы доступа 268
How to: Declare and Use Read/Write Properties 274
Объявление и использование свойств чтения и записи 274
Auto-Implemented Properties 277
Автоматически реализуемые свойства 277
How to: Implement a Lightweight Class with Auto-Implemented Properties 278
Реализация облегченного класса с автоматически реализуемыми свойствами 278
Indexers 279
Indexers Overview 279
Индексаторы 279
Общие сведения об индексаторах 279
Using Indexers 280
Использование индексаторов 280
Indexers in Interfaces 285
Индексаторы в интерфейсах 285
Comparison Between Properties and Indexers 288
Сравнение свойств и индексаторов 288
Delegates 289
Delegates Overview 289
Делегаты 289
Общие сведения о делегатах 289
Using Delegates 290
Использование делегатов 290
Delegates with Named vs. Anonymous Methods 294
Делегаты с именованными методами и делегаты с анонимными методами 294
When to Use Delegates Instead of Interfaces 297
Использование делегатов вместо интерфейсов 297
Covariance and Contravariance in Delegates 298
Ковариация и контрвариация в делегатах 298
How to: Combine Delegates (Multicast Delegates) 300
Объединение делегатов (многоадресные делегаты) 300
How to: Declare, Instantiate, and Use a Delegate 301
Объявление, создание экземпляра и использование делегата 301
Events 305
Events Overview 305
События 305
Общие сведения о событиях 305
How to: Subscribe to and Unsubscribe from Events 306
Подписка и отмена подписки на события 306
How to: Publish Events that Conform to .NET Framework Guidelines 309
Публикация событий, соответствующих рекомендациям .NET Framework 309
How to: Raise Base Class Events in Derived Classes 314
Создание событий базового класса в производных классах 314
How to: Raise and Consume Events 320
Вызов и прием событий 320
How to: Implement Interface Events 326
Реализация событий интерфейса 326
How to: Use a Dictionary to Store Event Instances 331
Использование словаря для хранения экземпляров событий 331
Generics 333
Generics Overview 333
Универсальные шаблоны 333
Общие сведения об универсальных шаблонах 333
Introduction to Generics 334
Введение в универсальные шаблоны 334
Benefits of Generics 337
Преимущества универсальных шаблонов 337
Generic Type Parameters 339
Параметры универсального типа 339
Namespaces 340
Namespaces Overview 340
Пространства имен 340
Общие сведения о пространствах имен 340
Using Namespaces 341
Использование пространств имен 341
How to: Use the Namespace Alias Qualifier 346
Использование квалификатора псевдонима пространства имен 346
Nullable Types 348
Типы, допускающие значения null 348
Nullable Types Overview 349
Общие сведения о типах, допускающих значения null 349
Using Nullable Types 350
Использование типов, допускающих значение null 350
How to: Identify a Nullable Type 356
Идентификация типа, допускающего значение null 357
Unsafe Code and Pointers 357
Unsafe Code Overview 357
Небезопасный код и указатели 358
Общие сведения о небезопасном коде 358
Fixed Size Buffers 359
Буферы фиксированного размера 359
Pointer types 361
Типы указателей 361
XML Documentation Comments 374
Recommended Tags for Documentation Comments 374
Комментарии XML-документации 374
Рекомендуемые теги для комментариев документации 374
How to: Use the XML Documentation Features 375
Использование XML-документации 375
Application Domains 379
Application Domains Overview 379
Домены приложений 379
Общие сведения о доменах приложений 379
Executing Code in Another Application Domain 380
Выполнение кода в другом домене приложения 380
Assemblies and the Global Assembly Cache 382
Assemblies Overview 382
Сборки и глобальный кэш сборок 382
Общие сведения о сборках 382
Attributes 383
Attribute Overview 383
Атрибуты 383
Общие сведения об атрибутах 383
Using Attributes 384
Использование атрибутов 384
How to: Create a C/C++ Union Using Attributes 386
Создание объединения C/C++ с помощью атрибутов 386
Common Attributes 387
Общие атрибуты 387
Exceptions and Exception Handling 391
Исключения и обработка исключений 391
Exceptions Overview 392
Общие сведения об исключениях 392
Using Exceptions 393
Использование исключений 393
Exception Handling 396
Обработка исключений 396
Creating and Throwing Exceptions 399
Создание и генерация исключений 399
Compiler-Generated Exceptions 402
Исключения, создаваемые компилятором 402
How to: Handle an Exception Using try/catch 403
Обработка исключений с помощью блока try-catch 403
How to: Execute Cleanup Code Using finally 404
Выполнение кода очистки с использованием блока finally 404
Interoperability 406
How to: Use Platform Invoke to Play a Wave File 406
Взаимодействие 406
Использование вызова неуправляемого кода для воспроизведения звукового файла 406
PlaySound 409
Threading 412
Overview 412
Создание потоков 412
Общие сведения 412
Using Threading 413
Использование потоков 413
Thread Synchronization 414
Синхронизация потоков 414
How to: Create and Terminate Threads 419
Создание и завершение потоков 419
How to: Synchronize a Producer and a Consumer Thread 423
Синхронизация потока-производителя и потока-потребителя 423
How to: Use a Thread Pool 432
Использование пула потоков 432
Reflection 436
Reflection Overview 436
Отражение 436
Общие сведения об отражении 436
C# DLLs 437
How to: Create and Use C# DLLs 437
Библиотеки C# 437
Создание и использование библиотек DLL на языке C# 437
Security 440
C# Specific Security Recommendations 440
Безопасность 440
Рекомендации по безопасности, касающиеся языка C# в отдельности 440
Consuming Unmanaged DLL Functions 441
To consume exported DLL functions 441
Использование неуправляемых функций DLL 441
Применение экспортированных функций DLL 441
A Closer Look at Platform Invoke 442
Подробный обзор вызова неуправляемого кода 442
Identifying Functions in DLLs 443
Идентификация функций в библиотеках DLL 443
Creating a Class to Hold DLL Functions 444
Создание класса, содержащего функции DLL 444
Creating Prototypes in Managed Code 445
Declaration Basics 445
Создание прототипов в управляемом коде 445
Основы описания 445
Adjusting the Definition 446
Настройка описания 446
Specifying an Entry Point 447
Задание точки входа 447
Calling a DLL Function 448
Passing Structures 448
Вызов функции DLL 448
Передача структур 448
File and Stream I/O 451
Basic File I/O 451
Файловый и потоковый ввод-вывод 451
Основы файлового ввода-вывода 451
Classes Used for File I/O 452
Классы, используемые в файловом вводе и выводе 452
Classes Used for Reading from and Writing to Streams 453
Классы, используемые для чтения и записи в поток 453
Common I/O Stream Classes 454
I/O and Security 454
Общие классы потокового ввода и вывода 454
Ввод-вывод и безопасность 454
How to: Create a Directory Listing 455
Создание списка каталогов 455
How to: Read and Write to a Newly Created Data File 457
Считывание из нового файла данных и запись в этот файл 457
How to: Copy Directories 458
Копирование каталогов 458
How to: Open and Append to a Log File 459
Открытие файла журнала и добавление в него данных 459
How to: Write Text to a File 460
Запись текста в файл 460
How to: Read Text from a File 461
Считывание текста из файла 461
How to: Read Characters from a String 463
Считывание символов из строки 463
How to: Write Characters to a String 464
Запись символов в строку 464
How to: Add or Remove Access Control List Entries 465
Добавление или удаление записей списка управления доступом 465
How to: Compress Files 468
Сжатие файлов 468
Composing Streams 470
Создание потоков 470
Creating a Writer 472
Создание класса Writer 472
Collections and Data Structures 473
Коллекции и структуры данных 473
Defining Collections 474
Определение коллекций 474
Selecting a Collection Class 476
Выбор класса коллекции 476
Introduction to Solutions, Projects, and Items 478
Containers: Solutions and Projects 478
Items: Files, References, Data Connections 478
Знакомство с решениями, проектами и элементами 478
Контейнеры: проекты и решения 478
Элементы: файлы, ссылки, подключения к данным 478
Solutions as Containers 479
Решения как контейнеры 479
Solutions 480
Решения 480
Projects as Containers 481
Проекты как контейнеры 481
Using the Visual C# IDE 484
Introduction to the IDE 484
Использование интегрированной среды разработки Visual C# 484
Введение в интегрированную среду разработки 484
Visual C# Tools 485
Средства Visual C# 485
Доступ к средствам в интегрированной среде разработки 486
Solution Explorer and Project Designer 487
Настройка интегрированной среды разработки 487
Creating a Project 488
Creating a New Project 488
Создание проекта 488
Создание нового проекта 488
What's in Your Project? 491
Состав проекта 491
Modifying Project Properties 493
Изменение свойств проекта 493
Designing a User Interface 497
Adding Controls 497
Создание пользовательского интерфейса 497
Добавление элементов управления 497
Setting Properties 499
Handling Events 499
Задание свойств 499
Обработка событий 499
Editing Code 500
IntelliSense 500
Редактирование кода 500
IntelliSense 500
Refactoring 503
Code Snippets 503
Wavy underlines 503
Оптимизация кода 503
Фрагменты кода 503
Подчеркивание волнистой линией 503
Readability Aids 504
Средства обеспечения удобочитаемости кода 504
Navigating and Searching 505
Class View 505
Навигация и поиск 505
Представление классов 505
CTRL-TAB Navigation 506
Навигация CTRL-TAB 506
Navigation Bars 507
Панели переходов 507
Find in Files 508
Object Browser 508
Navigation Stacks 508
Поиск в файлах 508
Обозреватель объектов 508
Стеки навигации 508
Building and Debugging 509
Build Settings 509
Build Errors 509
Построение и отладка 509
Параметры построения 509
Ошибки построения 509
Release vs. Debug configurations 511
Debugging 511
Сравнение отладочной и выпускной конфигураций 511
Отладка 511
Modeling and Analyzing Code 514
Class Designer 514
Моделирование и анализ кода 514
Конструктор классов 514
Object Browser 516
Обозреватель объектов 516
Metadata as Source: 517
Code Analysis for Managed Code 517
Метаданные как источник 517
Анализ управляемого кода 517
Adding and Editing Resources 518
Adding Resources to Projects 518
Добавление и редактирование ресурсов 518
Добавление ресурсов в проекты 518
Editing Resources 519
Редактирование ресурсов 519
Compiling Resources into Assemblies 520
Accessing Resources at Run-Time 520
Компиляция ресурсов в сборки 520
Доступ к ресурсам во время выполнения 520
Getting Help 521
Online vs. Local Help 521
Получение справки 521
Локальная справка и справка в Интернете 521
F1 Search 522
Search 522
Поиск по F1 522
Поиск 522
Index 523
Table of Contents 523
Указатель 523
Содержание 523
How Do I 524
Dynamic Help 524
Samples 524
Инструкции 524
Динамическая справка 524
Примеры 524
Refactoring 525
Multi-Project Refactoring 525
Preview Changes Dialog Box 525
Error-Tolerant Refactoring 525
Оптимизация 525
Многопроектная оптимизация 525
Диалоговое окно "Предварительный просмотр изменений" 525
Допускающая наличие ошибок оптимизация 525
Extract Method 526
Извлечение метода 526
Rename 528
Переименовать 528
Promote Local Variable to Parameter 531
Превращение локальной переменной в параметр 531
Заметки 532
Code Colorization 534
Tokens 534
Разметка кода цветом 534
Лексемы 534
Contextual Keywords 535
Brace Matching Colorization 535
Bold Colorization 535
Контекстные ключевые слова 535
Разметка цветом для обозначения парности фигурных скобок 535
Разметка цветом и жирным шрифтом 535
Highlight Colorization 536
Разметка цветом и выделение цветным фоном 536
C# Programming Guide
This section provides detailed information on key C# language features and features accessible to C# through the .NET Framework.
Inside a C# Program
The section discusses the general structure of a C# program, and includes the standard "Hello, World!" example.
Hello World -- Your First Program
The following console program is the C# version of the traditional "Hello World!" program, which displays the string Hello World!
.
using System; // A "Hello World!" program in C# namespace HelloWorld { class Hello { static void Main() { System.Console.WriteLine("Hello World!"); } } } |
Let us now examine the important parts of this program in turn.
Comments
The first line contains a comment:
// A "Hello World!" program in C# |
The characters //
convert the rest of the line to a comment. You can also comment a block of text by enclosing it between the /*
and */
characters, for example:
/* A "Hello World!" program in C#. This program displays the string "Hello World!" on the screen. */ |
Руководство по программированию на C#
В этом разделе представлены подробные сведения об основных возможностях языка C#, а также о функциях, доступных в этом языке благодаря платформе .NET Framework.
Структура программы C#
В данном разделе рассматривается общая структура программы C# и приведен стандартный пример "Здравствуй, мир!".
Hello World – Создаем первую программу
Следующая консольная программа – это версия традиционной программы "Hello World!" на языке C#, которая выводит на экран строку Hello World!.
---
Давайте разберем важные части этой программы по порядку.
Комментарии
Первая строка содержит комментарий.
// A "Hello World!" program in C# |
Символы //
преобразуют остальную часть строки в комментарий. Можно также написать комментарий к блоку текста, окружив его символами /*
и */
, например:
/* A "Hello World!" program in C#. This program displays the string "Hello World!" on the screen. */ |
The Main Method
The C# program must contain a Main
method, in which control starts and ends. The Main
method is where you create objects and execute other methods.
The Main
method is a static method that resides inside a class or a struct. In the previous "Hello World!" example, it resides in a class named Hello
. Declare the Main
method in one of the following ways:
It can return void:
static void Main()
{
//...
}
It can also return an int:
static int Main()
{
//...
return 0;
}
With both of the return types, it can take arguments:
static void Main(string[] args)
{
//...
}
-or-
static int Main(string[] args) { //... return 0; } |
The parameter of the Main
method is a string
array that represents the command-line arguments used to invoke the program. Notice that, unlike C++, this array does not include the name of the executable (exe) file.
- Оглавление
- Метод Main
- Ввод и вывод
- Компиляция и выполнение
- Общая структура программы на c#
- Main() и аргументы командной строки
- Общие сведения
- Аргументы командной строки
- Отображение аргументов командной строки
- Доступ к аргументам командной строки с помощью оператора "foreach"
- Значения, возвращаемые методом Main()
- Пример результатов выполнения
- Общие сведения о типах данных
- Приведение
- Результат
- Упаковка-преобразование и распаковка-преобразование3
- Производительность
- Упаковка-преобразование4
- Описание5
- Результат
- Распаковка-преобразование6
- Описание7
- Результат
- Преобразование массива байтов в значение типа "int"8
- Пример9
- Преобразование строки в значение типа "int"
- Преобразование шестнадцатеричных строк10
- Массивы
- Общие сведения о массивах
- Массивы как объекты
- Результат
- Одномерные массив
- Массивы типов значений и ссылочных типов.
- Многомерные массивы
- Инициализация массива
- Массивы массивов
- Результат
- Использование оператора foreach с массивами
- Передача массивов в качестве параметров
- Передача одномерных массивов в качестве параметров
- Пример 1 Описание
- Результат 1
- Передача многомерных массивов в качестве параметров
- Пример 2 Описание
- Передача массивов при помощи параметров ref и out
- Пример 1
- Пример 2
- Неявно типизированные массивы11
- Неявно типизированные массивы в инициализаторах объектов12
- Использование строк
- Работа со строками Escape-знаки
- Точные строки: символ @
- Доступ к отдельным знакам
- Смена регистра
- Сравнения
- Разделение строки на подстроки
- Строки с нулевыми значениями и пустые строки
- Использование класса StringBuilder13
- Анализ строк с помощью метода разделения
- Навигация по содержимому строки с помощью строковых методов
- Анализ строк с помощью регулярных выражений14
- Объединение нескольких строк
- Изменение содержимого строки
- Определение наличия числового значения в строке
- Надежное программирование
- Безопасность
- Базовые типы кодировки
- Типы форматирования
- Общие сведения о форматировании
- Описатели формата
- Анализ и описатели формата
- Метод ToString и описатели формата
- Поставщики формата15
- Составное форматирование
- Форматирование базовых типов
- Форматирование для различных языков и региональных параметров16
- Составное форматирование
- Строка составного формата
- Синтаксис элементов форматирования
- Выравнивание
- Компонент строки формата
- Оформление фигурных скобок17
- Порядок обработки18
- Примеры кода
- Строки числовых форматов
- Строки стандартных числовых форматов
- Примечания Настройки панели управления
- Свойства NumberFormatInfo
- Целочисленные типы и типы с плавающей запятой
- Бесконечности действительных чисел с плавающей запятой и NaN
- Строки настраиваемых числовых форматов19
- Примечания Бесконечности действительных чисел с плавающей запятой и NaN
- Настройки панели управления
- Строки формата с фиксированной запятой и округлением
- Разделители секций и условное форматирование20
- Два примера настраиваемых форматов
- Регулярные выражения в .Net Framework
- Регулярные выражения как язык
- Escape-знаки
- Выполнение действия со строками с помощью основных строковых операций
- Разбор строк
- Разбор числовых строк
- Операторы и выражения
- Операторы
- Выражения
- Литералы и простые имена
- Выражения вызова
- Операторы
- Анонимные функции
- Эволюция делегатов в c#
- Лямбда-выражения22
- Выражения-лямбды
- Лямбды операторов
- Лямбды со стандартными операторами запросов
- Вывод типа в лямбда-выражениях
- Область действия переменной в лямбда-выражениях
- Использование лямбда-выражений вне linq
- Анонимные методы
- Заметки
- Перегружаемые операторы
- Операторы преобразования23
- Общие сведения об операторах преобразования
- Использование операторов преобразования
- Пример 1 Описание
- Результат 1
- Пример 2 Описание
- Результат 2
- Реализация определенных пользователем преобразований между структурами
- Надежное программирование
- Перегрузка операторов для реализации класса комплексных чисел
- Переопределение Equals
- Объекты, классы и структуры
- Интерфейсы
- Универсальные типы
- Статические типы
- Объекты
- Экземпляры структуры и экземпляры класса
- Идентификация объекта и идентификация значения26
- Объявление классов
- Создание объектов
- Наследование классов
- Описание
- Результат
- Общие сведения о классах
- Структуры
- Общие сведения о структурах
- Использование структур
- Пример 1 Описание
- Результат
- Пример 2 Описание
- Результат
- Наследование
- Абстрактные и запечатанные классы и члены классов
- Абстрактные классы и члены классов
- Запечатанные классы и члены классов
- Определение абстрактных свойств
- Полиморфизм
- Общие сведения о полиморфизме
- Управление версиями с помощью ключевых слов "Override" и "New"
- Переопределение и выбор метода29
- Использование ключевых слов "Override" и "New"
- Переопределение метода ToString
- Порядок переопределения метода OnString в классе или структуре
- Интерфейсы
- Общие сведения об интерфейсах
- Явная реализация интерфейса33
- Явная реализация членов интерфейса
- Надежное программирование
- Явная реализация членов интерфейса с наследованием
- Надежное программирование
- Параметры методов
- Возвращаемые значения
- Передача параметров
- Передача параметров типа значения
- Пример. Передача типов значений с помощью значения.
- Пример. Передача типов значений с помощью ссылки.
- Пример. Замена типов значений.
- Передача параметров ссылочного типа
- Пример. Передача ссылочных типов по значению
- Результат
- Рассмотрение кода
- Пример. Передача ссылочных типов по ссылке
- Результат
- Рассмотрение кода
- Пример. Перестановка двух строк
- Результат
- Рассмотрение кода
- Конструкторы
- Использование конструкторов
- Конструкторы экземпляров
- Пример 1
- Результат
- Пример 2
- Результат
- Пример 3
- Результат
- Закрытые конструкторы35
- Результат
- Статические конструкторы36
- Результат
- Создание конструктора копии
- Деструкторы
- Заметки
- Использование деструкторов для освобождения ресурсов.
- Высвобождение ресурсов явным образом
- Результат
- Инициализаторы объектов и коллекций
- Инициализаторы объектов и анонимные типы37
- Инициализаторы объектов и типы, допускающие значение null
- Инициализаторы коллекций
- Инициализация объектов без вызова конструктора
- Компиляция кода38
- Инициализация словаря с помощью инициализатора коллекции39
- Компиляция кода
- Константы
- Вложенные типы
- Модификаторы доступа
- Доступность класса и структуры
- Доступность члена класса и структуры
- Другие типы
- Разделяемые классы и методы40
- Разделяемый класс
- Ограничения
- Пример 1 Описание
- Результат
- Пример 2 Описание
- Разделяемые методы
- Статические классы и члены статических классов
- Статические классы
- Когда следует использовать статические классы
- Статические члены
- Входные данные
- Пример результатов выполнения.
- Определение различия между передачей структуры и ссылки класса в метод
- Анонимные типы41
- Заметки
- Возвращение поднаборов свойств элементов в запросе
- Компиляция кода
- Методы расширения
- Неявно типизированные локальные переменные
- Var и анонимные типы
- Заметки
- Свойства
- Результат
- Общие сведения о свойствах
- Использование свойств
- Метод доступа get
- Метод доступа set
- Заметки
- Пример 1 Описание
- Результат 1 Employee number: 101 Employee name: Claude Vige
- Пример 2 Описание
- Результат 2
- Рассмотрение кода
- Пример 3 Описание
- Введенные данные
- Результат 3
- Свойства интерфейса
- Пример результатов выполнения
- Асимметричные методы доступа
- Ограничения модификаторов доступа в методах доступа
- Модификаторы доступа в переопределяющих методах доступа
- Реализация интерфейсов
- Домен доступности к методу доступа
- Результат
- Примечания
- Объявление и использование свойств чтения и записи
- Надежное программирование
- Автоматически реализуемые свойства
- Реализация облегченного класса с автоматически реализуемыми свойствами
- Индексаторы
- Общие сведения об индексаторах
- Использование индексаторов
- Заметки
- Пример 1 Описание
- Индексирование с использованием других значений
- Пример 2 Описание
- Результат
- Надежное программирование
- Индексаторы в интерфейсах
- Результат
- Сравнение свойств и индексаторов
- Делегаты
- Общие сведения о делегатах
- Использование делегатов
- Делегаты с именованными методами и делегаты с анонимными методами
- Заметки
- Пример 1
- Результат
- Пример 2
- Результат
- Использование делегатов вместо интерфейсов
- Ковариация и контрвариация в делегатах
- Пример 1 (ковариация) Описание
- Пример 2 (контрвариация) Описание
- Объединение делегатов (многоадресные делегаты)
- Объявление, создание экземпляра и использование делегата
- Надежное программирование
- События
- Общие сведения о событиях
- Подписка и отмена подписки на события
- Подписка на события в среде ide Visual Studio
- Подписка на события программными средствами
- Подписка на события при помощи анонимного метода
- Отмена подписки
- Отмена подписки на событие
- Публикация событий, соответствующих рекомендациям .Net Framework
- Порядок публикации событий, основанных на шаблоне EventHandler
- Создание событий базового класса в производных классах
- Вызов и прием событий
- Реализация событий интерфейса
- Реализация событий интерфейса в классе
- Пример44
- Использование словаря для хранения экземпляров событий
- Универсальные шаблоны
- Общие сведения об универсальных шаблонах
- Введение в универсальные шаблоны
- Преимущества универсальных шаблонов
- Параметры универсального типа
- Рекомендации по именованию параметра типа
- Пространства имен
- Общие сведения о пространствах имен
- Использование пространств имен
- Доступ к пространствам имен
- Псевдонимы пространств имен
- Использование пространств имен для управления областью действия
- Полные имена
- Использование квалификатора псевдонима пространства имен
- Типы, допускающие значения null
- Общие сведения о типах, допускающих значения null
- Использование типов, допускающих значение null
- Примеры допускающих значение null типов
- Члены допускающих значение null типов
- Явные преобразования
- Неявные преобразования
- Операторы
- Оператор ??
- Идентификация типа, допускающего значение null
- Небезопасный код и указатели
- Общие сведения о небезопасном коде
- Буферы фиксированного размера
- Заметки
- Типы указателей45
- Преобразования указателей
- Неявные преобразования указателей
- Явные преобразования указателей
- Результат
- Выражения указателей Получение значения переменной указателя
- Получение адреса переменной
- Доступ к члену с использованием указателя
- Доступ к элементу массива с использованием указателя
- Управление указателями Увеличение и уменьшение указателей
- Арифметические операции над указателями
- Сравнение указателей
- Использование указателей для копирования массива байтов
- Комментарии xml-документации
- Рекомендуемые теги для комментариев документации
- Использование xml-документации
- Компиляция кода
- Надежное программирование
- Домены приложений
- Общие сведения о доменах приложений
- Выполнение кода в другом домене приложения
- Сборки и глобальный кэш сборок
- Общие сведения о сборках
- Атрибуты
- Общие сведения об атрибутах
- Использование атрибутов
- Общие атрибуты
- Заметки
- Использование нескольких идентификаторов
- Атрибут Obsolete
- Глобальные атрибуты
- Исключения и обработка исключений
- Общие сведения об исключениях
- Использование исключений
- Обработка исключений
- Блоки catch
- Блоки finally
- Создание и генерация исключений
- Чего следует избегать при генерации исключений
- Определение классов исключений
- Исключения, создаваемые компилятором
- Обработка исключений с помощью блока try-catch
- Примечания
- Выполнение кода очистки с использованием блока finally
- Взаимодействие
- Использование вызова неуправляемого кода для воспроизведения звукового файла
- Компиляция кода Чтобы скомпилировать этот код, выполните следующие действия47
- Создание потоков
- Общие сведения
- Использование потоков
- Синхронизация потоков
- Ключевое слово lock
- Мониторы
- События синхронизации и дескрипторы ожидания
- Мьютексные объекты
- Создание и завершение потоков
- Синхронизация потока-производителя и потока-потребителя
- Использование пула потоков
- Отражение
- Общие сведения об отражении
- Библиотеки c#
- Создание и использование библиотек dll на языке c#
- Выполнение
- Результат
- Компиляция кода
- Безопасность
- Рекомендации по безопасности, касающиеся языка c# в отдельности
- Использование неуправляемых функций dll
- Применение экспортированных функций dll
- Подробный обзор вызова неуправляемого кода
- Идентификация функций в библиотеках dll
- Создание класса, содержащего функции dll
- Создание прототипов в управляемом коде
- Основы описания
- Настройка описания
- Задание точки входа
- Вызов функции dll
- Передача структур
- Объявление и передача структур
- Объявление и передача классов
- Файловый и потоковый ввод-вывод
- Основы файлового ввода-вывода
- Классы, используемые в файловом вводе и выводе
- Классы, используемые для чтения и записи в поток
- Общие классы потокового ввода и вывода
- Ввод-вывод и безопасность
- Создание списка каталогов
- Надежное программирование
- Считывание из нового файла данных и запись в этот файл
- Надежное программирование
- Копирование каталогов
- Открытие файла журнала и добавление в него данных
- Запись текста в файл
- Считывание текста из файла
- Надежное программирование
- Считывание символов из строки
- Результат
- Запись символов в строку
- Надежное программирование
- Добавление или удаление записей списка управления доступом
- Чтобы добавить или удалить элемент списка управления доступом из файла
- Чтобы добавить или удалить элемент acl из каталога
- Компиляция кода
- Сжатие файлов
- Создание потоков
- Создание класса Writer
- Коллекции и структуры данных
- Определение коллекций
- Выбор класса коллекции
- Знакомство с решениями, проектами и элементами
- Контейнеры: проекты и решения
- Элементы: файлы, ссылки, подключения к данным
- Решения как контейнеры
- Решения
- Преимущества
- Файлы определения
- Проекты как контейнеры
- Шаблоны проектов
- Файлы проекта
- Элементы проектов
- Использование интегрированной среды разработки Visual c#
- Введение в интегрированную среду разработки
- Средства Visual c#
- Доступ к средствам в интегрированной среде разработки
- Окна редактора и конструктора форм Windows
- Обозреватель решений и конструктор проектов
- Окна компилятора, отладчика и списка ошибок
- Настройка интегрированной среды разработки
- Создание проекта
- Создание нового проекта
- Состав проекта Свойства
- Ресурсы
- Другие файлы исходного кода
- Изменение свойств проекта
- Создание пользовательского интерфейса
- Добавление элементов управления
- Задание свойств
- Обработка событий
- Редактирование кода
- Списки завершения
- Краткие сведения
- Список членов
- Сведения о параметрах
- Добавление директив using
- Оптимизация кода
- Фрагменты кода
- Подчеркивание волнистой линией
- Средства обеспечения удобочитаемости кода Форматирование кода
- Структура
- Выделение цветом
- Навигация и поиск
- Представление классов
- Навигация ctrl-tab
- Панели переходов
- Поиск в файлах
- Обозреватель объектов
- Стеки навигации
- Построение и отладка
- Параметры построения
- Ошибки построения
- Сравнение отладочной и выпускной конфигураций
- Отладка
- Моделирование и анализ кода
- Конструктор классов
- Обозреватель объектов
- Метаданные как источник
- Анализ управляемого кода
- Добавление и редактирование ресурсов
- Добавление ресурсов в проекты
- Редактирование ресурсов
- Компиляция ресурсов в сборки
- Доступ к ресурсам во время выполнения
- Получение справки
- Локальная справка и справка в Интернете
- Поиск по f1
- Указатель
- Содержание
- Инструкции
- Динамическая справка
- Примеры
- Оптимизация
- Многопроектная оптимизация
- Диалоговое окно "Предварительный просмотр изменений"
- Допускающая наличие ошибок оптимизация
- Извлечение метода
- Оптимизация кода с помощью операции "извлечение метода"
- Чтобы воспользоваться операцией "извлечение метода"
- Переименовать
- Операции переименования
- Переименование идентификаторов
- Чтобы переименовать идентификатор
- Превращение локальной переменной в параметр
- Заметки
- Превращение локальной переменной в параметр
- Чтобы выполнить превращение локальной переменной в параметр
- Разметка кода цветом
- Лексемы
- Контекстные ключевые слова
- Разметка цветом для обозначения парности фигурных скобок
- Разметка цветом и жирным шрифтом
- Разметка цветом и выделение цветным фоном