- •Введение
- •Основные сведения по языку c#
- •Общие сведения о .Net Framework
- •C# и платформа .Net Framework
- •Средства разработки для .Net Framework
- •СредаClr
- •Понятие сборки (assembly)
- •Jit-компиляция
- •Просмотр метаданных
- •Сборка мусора
- •Обзор иср
- •Иср Visual c# Express
- •Стартовая страница
- •Консольное приложение
- •Приложения Windows
- •ИсрVisual Studio .Net
- •ИсрSharpDevelop
- •Основы языка c#
- •Алфавит
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Переменные и константы
- •Структура программы на c#
- •Пространства имен
- •Main() и аргументы командной строки
- •Операторы
- •Основные операторы
- •Унарные операторы
- •Аддитивные операторы
- •Мультипликативные операторы
- •Операторы сдвига
- •Операторы отношений
- •Операторы присваивания
- •Арифметическое переполнение
- •Математические операции
- •Литералы
- •Описание
- •Структуры
- •Инкапсуляция
- •Наследование
- •Полиморфиэм
- •Конструкторы
- •Деструкторы
- •Интерфейсы
- •Делегаты
- •Типы значений
- •Ссылочные типы
- •Тип dynamic
- •Тип object
- •Тип string
- •Встроенные базовые типы
- •Типы чисел
- •Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •Преобразования типов
- •Стандартное форматирование чисел
- •Нестандартное форматирование чисел
- •Тип char - символы
- •Тип enum - перечисление
- •Тип DateTime
- •Свойства
- •Задание типов в объявлениях переменных
- •Инструкции, введение
- •Выражения
- •Разделители
- •Решения и ветвления
- •Безусловный переход вызовом функций
- •Ветвление if; else
- •Вложенные ветвления if; else
- •Выбор switch; case
- •Команда goto и метки
- •Цикл for
- •Цикл while
- •Цикл do- while
- •Безусловные переходы
- •Вечные циклы
- •Команда foreach
- •Обработкаошибок и исключений
- •Try, Catch
- •Try, Catch, Finally
- •Работа со строками
- •Представление строк
- •Метод ToString()
- •Доступ к отдельным знакам
- •Массивы и коллекции
- •Коллекции
- •Массивы
- •Использование инструкции foreach, in
- •Графика
- •Объект Graphics
- •Перо (Pen)
- •Кисть (Brush)
- •Шрифты и текст
- •Методы рисования
- •Методы заливки
- •Рисование графика функции
- •Растровая графика
- •Примитивные компоненты
- •Подробнее оCil
- •Ассемблер cil
- •Архитектура виртуальной машиныCil
- •Память для метода
- •Система типовCts
- •Типы в базовых классах .Net, c# и cil
- •Пользовательские типы данных
- •Упакованные типы-значения
- •Виртуальная система выполнения
- •Стек вычислений
- •Автоматическое управление памятью
- •Лексемы в cil
- •Директивы cil
- •Атрибуты cil
- •Коды операций в cil
- •Команды загрузки
- •Команды выгрузки
- •Вычислительные команды
- •Арифметические инструкции
- •Переходы и вызовы в il
- •Трансляция вCil
Общие сведения о .Net Framework
.Net –одна из возможных реализаций так называемой общей инфраструктуры языков (Common Language Infrastructure, сокращенно CLI), спецификация которой разработана корпорацией Microsoft.
Можно, руководствуясь этой спецификацией, разработать собственную реализацию CLI. В настоящее время ведутся по крайней мере два посвященных этому проекта. Это платформа Mono, создаваемая компанией Ximian, и разрабатываемый в рамках GNU проект Portable.Net. Кроме того, Microsoft распространяет в исходных текстах еще одну свою реализацию CLI, работающую как в Windows, так и под управлением FreeBSD. Эта реализация называется Shared Source CLI (иногда можно услышать другое название – Rotor).

Чтобы понять, как работает .Net, необходимо изучить спецификацию CLI. Это ее составные части:
Общая система типов (Common Type System, сокращенно CTS). Охватывает большую часть типов, встречающихся в распространенных языках программирования.
Виртуальная система исполнения (Virtual Execution System, сокращенно VES). Отвечает за загрузку и выполнение программ, написанных для CLI.
Система метаданных (Metadata System). Предназначена для описания типов, хранится в независимом от конкретного языка программирования виде, используется для передачи типовой информации между различными метаинструментами, а также между этими инструментами и VES.
Общий промежуточный язык (Common Intermediate Language, сокращенно CIL) – независимый от платформы объектно-ориентированный байт-код, выступающий в роли целевого языка для любого поддерживающего CLI компилятора. Программа создается на одном из поддерживаемых в .NET языков программирования, компилируется в код CIL, из которого собирается исполняемый файл. Для каждого языка используется свой компилятор.
Общая спецификация языков (Common Language Specification, сокращенно CLS). Это соглашение между разработчиками языков программирования и разработчиками библиотек классов, в котором определено подмножество CTS и набор правил. Если разработчики языка реализуют хотя бы определенное в этом соглашении подмножество CTS и при этом действуют в соответствии с указанными правилами, то пользователь языка получает возможность использовать любую соответствующую спецификации CLS библиотеку.
C# и платформа .Net Framework
В отличие от традиционного кода на C и C++, код C# не компилируется непосредственно в машинный язык. Компилятор C# преобразует исходный код C# в код на промежуточном языке IL (MIcrosoft IntermediateLanguage). Файлы IL (или сокращенно IL) называются сборками. Файлы IL создаются всеми языками на основе общеязыковой среды выполнения CLR (CLR – Common Language Runtime). Среда CLR поддерживает языки Visual C#, Visual C++, Visual J# и Visual Basic. Созданные файлы IL в большинстве случаев практически идентичны во многих языках, что упрощает сочетание различных программных компонентов, написанных на разных языках.
На следующей схеме показано преобразование написанного кода C# в исполняемое приложение.

Файлы CIL отображаются в виде стандартных файлов EXE или DLL, однако вместо выполнения непосредственно на платформе Windows, они выполняются средой CLR. При необходимости CLR компилирует программу IL в машинный код. Данный процесс называется JIT-компиляцией (JIT – JustinTime). Затем происходит прямое выполнение этого кода. В исполняемый код включаются ссылки на подпрограммы, содержащиеся в сборках (иначе, динамически подключаемых библиотеках DLL) платформы .NET Framework. Чтобы они работали, на компьютередолжнабыть установлена платформа .NET Framework.
За счет создания промежуточного, независимого от оборудования кода, который не преобразуется в машинный код вплоть до последнего момента, повышается надежность, безопасность и переносимость. Большая часть этого процесса скрыта от программистов: программы C# компилируются, выполняются и распространяются так же, как и другие. Пока на компьютере установлена платформа .NET Framework, программа C# будет выполняться подобно любому другому приложению.
Файлы CIL имеют расширение .exe. Однако фактически это исходники. Если их нужно разворачивать на компьютере без платформы .NET Framework, то требуется формировать настоящий исполняемый файл, используя специальные процедуры.
Возможности платформы .NET Framework упорядочены по пространствам имен, каждое из которых обычно содержит несколько классов. Например, пространство имен System.IO содержит много классов для чтения и записи файлов, а пространство имен System.Text включает классы для обработки строковых данных. Просмотрите справочную документацию по библиотеке классов .NET Framework, чтобы получить представление о различных пространствах имен и их содержимом.
