Общеязыковая среда выполнения (Common Language RunTime, сокращенно CLR). <...> Общий промежуточный язык (Common Intermediate Language, сокращенно CIL) – независимый от платформы объектно-ориентированный байт-код, выступающий в роли целевого языка для любого поддерживающего CLI компилятора. <...> NET языков программирования, компилируется в код CIL, из которого затем CLR собирает исполняемый файл. <...> Среда CLR получает этот адрес и анализирует содержащийся там CIL код. <...> Когда Main первый раз обращается к WriteLine, вызывается функция JITCompiler. <...> JITCompiler ищет в метаданных соответствующей сборки IL-код вызываемого метода. <...> После этого JITCompiler возвращается к внутренней структуре данных типа и заменяет адрес вызываемого метода адресом блока памяти, содержащего готовые машинные команды. <...> Этот код — реализация метода WriteLine (той его версии, что принимает параметр String). <...> К этому моменту код WriteLine уже проверен и скомпилирован, так что обращение к блоку памяти производится, минуя вызов JITCompiler. <...> 13 Таким образом, осуществляется интерпретация кода с компилированием последовательно вызываемых методов. <...> NET, все вышеперечисленные ошибки никогда не возникают, потому что эти программы используют реализованное в CLR автоматическое управление памятью, а именно – сборщик мусора. <...> При этом сборщик мусора также умеет «двигать» объекты в памяти, тем самым устраняя фрагментацию адресного пространства. <...> Все эти чудеса, которые творит сборщик мусора, возможны исключительно благодаря тому, что во время выполнения программы известны типы всех используемых в ней объектов. <...> Стек используется только для хранения промежуточных результатов вычисления. <...> Стек вычислений состоит из слотов, которые в разные моменты времени может содержать данные разных типов. <...> Для хранения локальных переменных и аргументов метода используются два массива, которые, как и стек вычислений, состоят из слотов. <...> Все типы делятся на две категориис Типы-значения (value types). <...> Описывают объектные ссылки (object references), которые представляют <...>
Программирование_на_языке_C#_в_Microsoft_Visual_Studio.Net.pdf
Оглавление
1. Введение ................................................................. 7
1.1. Основные сведения по языку C#
1.2. Общие сведения о .Net Framework
7
8
1.3. Средства разработки для платформы .NET Framework 9
1.4. Среда CLR
1.4.1. Введение
1.4.2. Понятие сборки (assembly)
1.4.3. JIT-компиляция
1.4.4. Просмотр метаданных
1.4.5. Сборка мусора
1.5. Подробнее о CIL
1.5.1. Ассемблер CIL
10
10
10
11
14
17
18
18
1.5.2. Архитектура виртуальной машины CIL20
1.5.3. Память для метода
1.5.4. Система типов CTS
20
21
1.5.5. Типы в базовых классах .NET, C# и CIL21
1.5.6. Пользовательские типы данных
1.5.7. Упакованные типы-значения
1.5.8. Виртуальная система выполнения
1.5.9. Стек вычислений
22
23
23
25
1.5.10. Автоматическое управление памятью 27
1.5.11. Лексемы в CIL
1.5.12. Директивы CIL
1.5.13. Атрибуты CIL
1.5.14. Коды операций в CIL
1.5.15. Команды загрузки
1.5.16. Команды выгрузки
1.5.17. Вычислительные команды
1.5.18. Арифметические инструкции
1.5.19. Переходы и вызовы в IL
1.5.20. Трансляция в CIL
27
27
28
29
31
32
32
32
36
36
2. Visual C# Express ................................................. 39
2.1. Возможности Visual C# Express
2.2. C# и платформа .Net Framework
2.3. Использование LINQ в C#
39
39
41
3. ИСР Visual C# Express Edition ........................... 42
3.1. Стартовая страница
3.2. Консольное приложение
3.3. Приложения Windows
4.2. Комментарии
4.3. Идентификаторы
42
50
54
4. Основы языка C# ................................................. 58
4.1. Алфавит
65
65
65
4
Стр.4
4.4. Ключевые слова
4.5. Переменные и константы
5.2. Main() и аргументы командной строки
66
67
5. Структура программы на C# .............................. 68
5.1. Пространства имен
68
69
6. Операторы ............................................................ 69
6.1. Основные операторы
6.2. Унарные операторы
6.3. Аддитивные операторы
6.4. Мультипликативные операторы
6.5. Операторы сдвига
6.6. Операторы отношений
6.7. Операторы присваивания
6.8. Арифметическое переполнение
6.9. Математические операции
6.10. Литералы
70
70
71
71
72
72
73
73
73
75
7. Типы ...................................................................... 76
7.1. Типы значений
7.2. Ссылочные типы
7.3. Классы
7.3.1. Структуры
7.3.2. Инкапсуляция
7.3.3. Наследование
7.3.4. Полиморфиэм
7.3.5. Конструкторы
7.3.6. Деструкторы
7.4. Интерфейсы
7.5. Делегаты
7.6. Тип dynamic
7.7. Тип object
7.8. Тип string
7.11.1. Типы целых чисел
7.11.2. Типы чисел с плавающей запятой
7.11.3. Значения типов по умолчанию
7.11.4. Преобразования типов
77
77
77
78
78
79
80
80
81
81
82
83
83
83
7.9. Задание типов в объявлениях переменных 83
7.10. Встроенные базовые типы
7.11. Типы чисел
84
85
85
85
85
86
7.11.5. Стандартное форматирование чисел 86
7.11.6. Нестандартное форматирование чисел88
7.12. Символы char
7.13. Тип DateTime
7.13.1. Свойства
7.13.2. Методы
7.13.3. Пример
89
90
91
91
92
5
Стр.5
8. Инструкции, введение......................................... 95
8.1. Выражения
8.2. Разделители
95
96
9. Решения и ветвления........................................... 97
9.1. Безусловный переход вызовом функций 97
9.2. Инструкция if; else
9.3. Вложенные инструкции if; else
9.4. Инструкции switch, case
97
97
98
10. Циклы ............................................................... 100
10.1. Инструкция goto
10.2. Инструкция for
10.3. Инструкция while
10.4. Инструкция do - while
10.5. Безусловные переходы
10.6. Вечные циклы
10.7. Инструкция foreach
11.2. Try, Catch, Finally
12.3. Доступ к отдельным знакам
100
100
101
102
102
104
104
11. Обработка ошибок и исключений ................. 106
11.1. Try, Catch
107
108
12. Работа со строками .......................................... 109
12.1. Представление строк
12.2. Метод ToString()
109
109
109
13. Массивы и коллекции ..................................... 111
13.1. Коллекции
13.2. Массивы
111
111
14. Графика ............................................................ 113
14.1. Объект Graphics
14.2. Перо (Pen)
13.3. Использование инструкции foreach, in 111
113
14.3. Кисть (Brush)
14.4. Шрифты и текст
14.5. Методы рисования
14.6. Методы заливки
14.7. Рисование графика функции
14.8. Растровая графика
14.9. Примитивные компоненты
113
114
114
115
120
123
125
128
6
Стр.6
1. Введение
1.1. Основные сведения по языку C#
Язык C# появился на свет в июне 2000 в результате работы группы программистов
Microsoft, которую возглавляет датчанин Андерс Хейлсберг (Anders
Hejlsberg). Этот человек известен как автор одного из первых компилируемых
языков программирования для персональных компьютеров IBM - Turbo Pascal.
Кроме того, во время работы в корпорации Borland он прославился созданием
интегрированной среды Delphi. В 2000 году он получил награду популярного
журнала Dr. Dobb's Journal за создание Turbo Pascal, Delphi и C#. Другой известной
фигурой в команде разработчиков C# является Эрик Гуннерсон (Eric
Gunnerson), автор первого популярного учебника «Введение в C#».
В настоящее время над языком C# работает группа программистов: Джеффри
Рихтер, Кристиан Нейгел, Билл Ивьен, Джей Глин, Карли Уотсон, Морган
Скиннер, Эндрю Троелсен, Трей Нэш.
Символ # в названии языка можно интерпретировать, как две пары плюсов
++;++, намекающие на новый шаг в развитии языка по сравнению с C++.
C# часто называют «С шарпом» (от англ. sharp) из-за схожести символа # с диезом
(музыкальный символ).
Язык программирования C# был разработан в качестве эффективного, надежного
и простого в использовании средства. В настоящее время C# является частью
сиcтемы Visual Studio .NET, предназначенной для удобной работы с платформой
.NET Framework и создания нового способа написания надежного программного
обеспечения для высокопроизводительных серверов, компактных
мобильных устройств и многого другого.
Существует бесплатная версия Visual Studio .NET под названием Visual Studio
Express Edition, в состав которой входит большинство компонент полной версии,
включая Visual C#. Последние версии созданы в 2008 и 2010 году. Обе являются
локализованными, содержат интерфейс и справку на русском языке.
C# — это современный компонентно-ориентированный язык с рядом возможностей,
общих для других языков программирования платформы .NET
Framework. В C# существует около 80 ключевых слов, большинство из которых
известно всем, кто работал с C, C++, Java или Visual Basic. Имеются различия в
синтаксисе, но они обычно незначительные.
7
Стр.7
Благодаря среде редактирования Visual C#, использующей технологию
IntelliSense для автоматического выполнения большей части сложных действий,
изучение C# не представляет трудностей. Редактор C# автоматически сохраняет
код в надлежащем виде, по мере необходимости предлагает методы и свойства
и выделяет ошибки при вводе данных.
Список литературы
1. Троелсен Э. Язык программирования С# 2008 и платформа .NET 3.5, 4-е изд.
: Пер. с англ. - М. : "Вильямс", 2010. 1344 с.
2. Нэш Т. C# 2010. Ускоренный курс для профессионалов. Пер. с англ. - М:
―Вильямс»,.2010, 592с.
3. Макки А. Введение в .NET 4.0 и Visual Studio 2010 для профессионалов.
Пер. с англ. - М.: "Вильямс", 2010. 412с.
4. Нейгел К. и др. С# 2008 и платформа .NET 3.5 для профессионалов. / Пер. с
англ. - М.: "Вильямс", 2009. 1392с.
5. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET
Framework 2.0 на языке С#. Пер. с англ. - М.: «Русская Редакция» ; СПб. :
Питер , 2007. 656 стр.
6. Lidin S. Expert .NET 2.0 IL Assembler. Apress; 2006, 530с.
7. Макаров А. и др. CIL и системное программирование в Microsoft.NET: – М. :
Интернет-УИТ, 2006. 328 с..
8. Климов Л. С#. Советы программистам. - СПб.: БХВ-Петербург, 2008. 544 с:
ил. + CD-ROM.
1.2. Общие сведения о .Net Framework
.Net –одна из возможных реализаций так называемой общей инфраструктуры
языков (Common Language Infrastructure, сокращенно CLI), спецификация которой
разработана корпорацией Microsoft.
Можно, руководствуясь этой спецификацией, разработать собственную реализацию
CLI. В настоящее время ведутся по крайней мере два посвященных этому
проекта. Это платформа Mono, создаваемая компанией Ximian, и разрабатываемый
в рамках GNU проект Portable.Net. Кроме того, Microsoft распространяет
в исходных текстах еще одну свою реализацию CLI, работающую как в
Windows, так и под управлением FreeBSD. Эта реализация называется Shared
Source CLI (иногда можно услышать другое название – Rotor).
8
Стр.8