Содержание
- 2. Андерс Хейлсберг (Anders Hejlsberg; род. в декабре 1960, Копенгаген) — датский инженер-программист. В 1980 году написал
- 3. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++
- 4. История создания С# Проект C# был начат в декабре 1998 и получил кодовое название COOL (C-style
- 5. Версия 1.0 Первая версия C# напоминала по своим возможностям Java 1.4, несколько их расширяя. Основным нововведением
- 6. Версия 2.0 Проект спецификации C# 2.0 впервые был выложен Microsoft в октябре 2003 года; в 2004
- 7. Версия 3.0 В сентябре 2005 года вышли проект спецификации C# 3.0 и бета-версия C# 3.0, устанавливаемая
- 8. Версия 4.0 Версия С# 4.0, которая была представлена в конце 2008 г. Новые возможности: Возможность использования
- 9. Версия 5.0 Текущей является Версия С# 5.0, которая была представлена в апреле 2010 г.. Два важных
- 10. Литература: А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд Язык программирования C#. Классика Computers Science. 4-е
- 11. .NET Framework Программа на языке C# выполняется в среде .NET Framework Microsoft начала разрабатывать .NET Framework
- 12. .NET Framework – интегрированный компонент Windows, содержит виртуальную систему выполнения (среда CLR) и унифицированный набор библиотек
- 13. FCL (Framework Class Library) .NET Framework состоит прежде всего из огромной библиотеки программ, к которой можно
- 14. Число классов библиотеки FCL велико (более 4 тысяч). Поэтому понадобился способ их структуризации. Логически классы с
- 15. Первая программа на C# using System; - подключение пространства имен namespace first { - новое пространство
- 16. В состав библиотеки классов .NET Framework, входят классы, которые используются при разработке Windows-приложений, Web-приложении, а также
- 17. CLR (Common Language Runtime) Наиболее революционным изобретением Framework.Net явилось создание исполнительной среды CLR (Common Language Runtime
- 18. Виртуальная машина Файл, имеющий уточнение exe, хотя и является exe-файлом, но это не совсем обычный, исполняемый
- 19. Microsoft использовала получивший широкое признание опыт виртуальной машины Java, улучшив процесс за счет того, что, в
- 20. Выполнение программы на С# Исходный код, написанный на языке C#, компилируется в промежуточный язык (IL). Код
- 21. Метаданные — это данные в двоичном формате с описанием программы, хранящиеся либо в переносимом исполняемом (PE)
- 22. Среди классов библиотеки FCL имеется класс Reflection, методы которого позволяют извлекать необходимую информацию. При проектировании класса
- 23. Ниже показаны отношения во время компиляции и время выполнения между файлами с исходным кодом C#, библиотеками
- 24. Сборщик мусора (Garbage Collector) и управление памятью Важной особенностью построения CLR является то, что исполнительная среда
- 25. В CLR задача сборки мусора снята не только с программистов, но и с разработчиков трансляторов, она
- 26. Исключительные ситуации Что происходит, когда при вызове некоторой функции (процедуры) обнаруживается, что она не может нормальным
- 27. События У CLR есть свое видение того, что представляет собой тип. Есть формальное описание общей системы
- 28. Общие спецификации и совместимые модули Уже говорилось, что каркас Framework.Net облегчает межъязыковое взаимодействие. Для того чтобы
- 30. Скачать презентацию
Андерс Хейлсберг (Anders Hejlsberg; род. в декабре 1960, Копенгаген) — датский
Андерс Хейлсберг (Anders Hejlsberg; род. в декабре 1960, Копенгаген) — датский
В 1980 году написал свой первый компилятор языка Паскаль и продал его фирме Borland.
Эта версия легла в основу Turbo/Borland Pascal, который развивался до 1995 года. До 1996 года Хейлсберг был главным проектировщиком фирмы Borland, где создал новое поколение компиляторов Паскаля — язык Delphi, компилятор которого работал уже под операционной системой Windows.
В 1996 году он перешёл в Microsoft, где работал над такими проектами, как J++ (версия Java) и Microsoft Foundation Classes. Позже возглавил группу по созданию и проектированию языка C#.
C# относится к семье языков с C-подобным синтаксисом, из них его
C# относится к семье языков с C-подобным синтаксисом, из них его
Переняв многое от своих предшественников — языков С++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем
Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. Некоторые синтаксические конструкции С# унаследованы и от Visual Basic.
История создания С#
Проект C# был начат в декабре 1998 и получил
История создания С#
Проект C# был начат в декабре 1998 и получил
Версия 1.0 появилась вместе с платформой .NET в июне 2000 года, тогда же появилась и первая общедоступная бета-версия;
C# 1.0 окончательно вышел вместе с Microsoft Visual Studio.NET в феврале 2002 года.
Версия 1.0
Первая версия C# напоминала по своим возможностям Java 1.4, несколько
Версия 1.0
Первая версия C# напоминала по своим возможностям Java 1.4, несколько
Основным нововведением был управляемый код (Managed code). Теперь программистам не надо было думать об освобождении памяти. Платформа автоматически делала это за них.
Версия 2.0
Проект спецификации C# 2.0 впервые был выложен Microsoft в октябре
Версия 2.0
Проект спецификации C# 2.0 впервые был выложен Microsoft в октябре
Новые возможности:
Частичные типы (разделение реализации класса более чем на один файл).
Обобщённые, или параметризованные типы (generics). В отличие от шаблонов С++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины.
Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова yield.
Анонимные методы, обеспечивающие функциональность замыкания.
Поддержка 64-разрядных вычислений, что кроме всего прочего, позволяет увеличить адресное пространство и использовать 64-разрядные примитивные типы данных.
Версия 3.0
В сентябре 2005 года вышли проект спецификации C# 3.0 и
Версия 3.0
В сентябре 2005 года вышли проект спецификации C# 3.0 и
Версия 4.0
Версия С# 4.0, которая была представлена в конце 2008 г.
Новые
Версия 4.0
Версия С# 4.0, которая была представлена в конце 2008 г.
Новые
Возможность использования позднего связывания, для использования:
с языками с динамической типизацией (Python, Ruby)
с COM-объектами
отражения (reflection)
объектов с изменяемой структурой (DOM). Появляется ключевое слово dynamic.
Именованные и опциональные параметры
Новые возможности COM interop
Ковариантность и контравариантность
Контракты в коде (Code Contracts)
Версия 5.0
Текущей является Версия С# 5.0, которая была представлена в апреле
Версия 5.0
Текущей является Версия С# 5.0, которая была представлена в апреле
Два важных средства, внедренных в версии 4.0 и непосредственно связанных с программированием на C#, предоставляются не самим языком, а средой .NET Framework 4.0. Речь идет о поддержке параллельного программирования с помощью библиотеки распараллеливания задач (TPL) и параллельном варианте языка интегрированных запросов (PLINQ). Оба эти средства позволяют существенно усовершенствовать и упростить процесс создания программ, в которых применяется принцип параллелизма. И то и другое средство упрощает создание многопоточного кода, который масштабируется автоматически для использования нескольких процессоров, доступных на компьютере. В настоящее время широкое распространение получили компьютеры с многоядерными процессорами, и поэтому возможность распараллеливать выполнение кода среди всех доступных процессоров приобретает все большее значение практически для всех, кто программирует на C#.
Литература:
А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд Язык программирования C#.
Литература:
А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд Язык программирования C#.
Э. Стиллмен, Дж. Грин Изучаем C#. 2-е издание = Head First C#, 2ed. — СПб.: «Питер», 2012. — 704 с. — ISBN 978-5-4461-0105-4
Эндрю Троелсен Язык программирования C# 5.0 и платформа .NET 4.5, 6-е издание = Pro C# 5.0 and the .NET 4.5 Framework, 6th edition. — М.: «Вильямс», 2013. — 1312 с. — ISBN 978-5-8459-1814-7
Джозеф Албахари, Бен Албахари C# 5.0. Справочник. Полное описание языка = C# 5.0 in a Nutshell: The Definitive Reference. — М.: «Вильямс», 2013. — 1008 с. — ISBN 978-5-8459-1819-2
Герберт Шилдт. C# 4.0: полное руководство = C# 4.0 The Complete Reference. — М.: «Вильямс», 2010. — С. 1056. — ISBN 978-5-8459-1684-6
Джон Скит. C#: программирование для профессионалов, 2-е издание = C# in Depth, 2nd Edition. — М.: «Вильямс», 2011. — 544 с. — ISBN 978-5-8459-1555-9
Кристиан Нейгел, Карли Уотсон и др. Visual C# 2010: полный курс = Beginning Microsoft Visual C# 2010. — М.: Диалектика, 2010. — ISBN 978-5-8459-1699-0
Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер. C# 4: Платформа .NET 4 для профессионалов = Professional C# 4 and .NET 4. — М.: Диалектика, 2010. — С. 1440. — ISBN 978-5-8459-1656-3
.NET Framework
Программа на языке C# выполняется в среде .NET Framework
Microsoft начала
.NET Framework
Программа на языке C# выполняется в среде .NET Framework
Microsoft начала
.NET Framework – интегрированный компонент Windows, содержит виртуальную систему выполнения
.NET Framework – интегрированный компонент Windows, содержит виртуальную систему выполнения
FCL (Framework Class Library) - библиотека классов;
CLR (Common Language Runtime) - общеязыковая исполнительная среда
FCL (Framework Class Library)
.NET Framework состоит прежде всего из огромной библиотеки
FCL (Framework Class Library)
.NET Framework состоит прежде всего из огромной библиотеки
Часть библиотеки .NET Framework посвящена описанию некоторых базисных типов. Тип — это способ представления данных; определение наиболее фундаментальных из них (например 32-разрядного целого со знаком) облегчает совместное использование языков программирования с помощью .NET Framework. Все вместе это называется CTS (Common Type System — единая система типов)
Число классов библиотеки FCL велико (более 4 тысяч). Поэтому понадобился способ
Число классов библиотеки FCL велико (более 4 тысяч). Поэтому понадобился способ
Основным пространством имен библиотеки FCL является пространство System, содержащее как классы, так и другие вложенные пространства имен. Так, уже упоминавшийся примитивный тип Int32 непосредственно вложен в пространство имен System и его полное имя, включающее имя пространства - System.Int32.
В пространство System вложен целый ряд других пространств имен.
Например, в пространстве System.Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов - списками, очередями, словарями.
В пространство System.Collections, в свою очередь, вложено пространство имен Specialized, содержащие классы со специализацией, например, коллекции, элементами которых являются только строки.
Пространство System.Windows.Forms содержит классы, используемые при создании Windows-приложений. Класс Form из этого пространства задает форму - окно, заполняемое элементами управления, графикой, обеспечивающее интерактивное взаимодействие с пользователем.
Первая программа на C#
using System; - подключение пространства имен
namespace first { - новое
Первая программа на C#
using System; - подключение пространства имен
namespace first { - новое
class Program { - класс Program
static void Main(string[ ] args) - главная функция
{
Console.WriteLine(“HELLO, WORLD!!!");
}
}
}
В состав библиотеки классов .NET Framework, входят классы, которые используются при
В состав библиотеки классов .NET Framework, входят классы, которые используются при
В библиотеке классов .NET Framework имеются также классы, обеспечивающие взаимодействие с языком XML, с моделью компонентных объектов Microsoft (COM) и с любой платформой, поддерживающей интерфейс 32-разрядных Windows-приложении (Win32 API).
ADO.NET Entity Framework (EF) — объектно-ориентированная технология доступа к данным
ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт.
Windows Forms — название интерфейса программирования приложений (API), отвечающего за графический интерфейс пользователя.
CLR (Common Language Runtime)
Наиболее революционным изобретением Framework.Net явилось создание исполнительной среды
CLR (Common Language Runtime)
Наиболее революционным изобретением Framework.Net явилось создание исполнительной среды
Компиляторы языков программирования, включенные в Visual Studio.Net, создают модули на промежуточном языке IL (Microsoft Intermediate Language)
Фактически компиляторы создают так называемый управляемый модуль - переносимый исполняемый файл (Portable Executable или PE-файл). Этот файл содержит код на IL и метаданные - всю необходимую информацию как для CLR, так и конечных пользователей, работающих с приложением
В зависимости от выбранного типа проекта, PE-файл может иметь уточнения exe, dll, mod или mdl.
Виртуальная машина
Файл, имеющий уточнение exe, хотя и является exe-файлом,
Виртуальная машина
Файл, имеющий уточнение exe, хотя и является exe-файлом,
Исполнительная среда начинает работать с кодом, в котором специфика исходного языка программирования исчезла. Код на IL начинает выполняться под управлением CLR (по этой причине код называется управляемым).
Исполнительную среду можно рассматривать как своеобразную виртуальную IL-машину. Эта машина транслирует "на лету" требуемые для исполнения участки кода в команды реального процессора, который в действительности и выполняет код
Microsoft использовала получивший широкое признание опыт виртуальной машины Java, улучшив
Microsoft использовала получивший широкое признание опыт виртуальной машины Java, улучшив
В состав CLR входят трансляторы JIT (Just In Time Compiler), которые и выполняют трансляцию IL в командный код той машины, где установлена и функционирует исполнительная среда CLR
Если у вас есть готовый PE-файл, то иногда полезно анализировать его IL-код и связанные с ним метаданные. В состав Framework SDK входит дизассемблер - ildasm, выполняющий дизассемблирование PE-файла и показывающий метаданные, а также IL-код с комментариями в наглядной форме.
Программисты, предпочитающие работать на низком уровне, могут программировать на языке ассемблера IL. В этом случае в их распоряжении будет вся мощь библиотеки FCL и все возможности CLR.
Выполнение программы на С#
Исходный код, написанный на языке C#,
Выполнение программы на С#
Исходный код, написанный на языке C#,
Каждая программная единица в среде .NET, (сборка), помимо кода на языке IL обязательно содержит метаданные, описывающие как её в целом (манифест), так и каждый тип, содержащийся в ней, в отдельности (метаданные). На рисунке показаны составные части однофайловой сборки.
Файл начинается с манифеста и включает в себя описание всех классов, хранимых в PE-файле, их свойств, методов, всех аргументов этих методов - всю необходимую CLR информацию. Поэтому помимо PE-файла не требуется никаких дополнительных файлов и записей в реестр - вся нужная информация извлекается из самого файла.
Метаданные — это данные в двоичном формате с описанием программы,
Метаданные — это данные в двоичном формате с описанием программы,
Когда код компилируется в PE-файл, метаданные помещаются в одну часть файла, а код преобразуется в IL и помещается в другую часть файла
В метаданных описываются все типы и члены, определенные или используемые в модуле или сборке
При исполнении кода среда выполнения загружает метаданные в память и обращается к ним для получения сведений о классах, членах, наследовании и других элементах кода
.NET-приложения содержат в себе метаданные, т.е. описание кода и данных, используемых приложением. Благодаря использованию метаданных возможно автоматическое преобразование данных в последовательную форму общеязыковой средой выполнения CLR при их сохранении.
Среди классов библиотеки FCL имеется класс Reflection, методы которого позволяют
Среди классов библиотеки FCL имеется класс Reflection, методы которого позволяют
При выполнении программы на C# сборка загружается в среду CLR в зависимости от сведений в манифесте. Далее, если требования безопасности соблюдены, среда CLR выполняет JIT-компиляцию для преобразования кода IL в инструкции машинного кода.
Среда CLR также предоставляет другие службы, относящиеся к автоматическому сбору мусора, обработке исключений и управлению ресурсами. Код, выполняемый средой CLR, иногда называют "управляемым кодом" в противопоставление "неуправляемому коду", который компилируется в машинный код, предназначенный для определенной системы.
Ниже показаны отношения во время компиляции и время выполнения между
Ниже показаны отношения во время компиляции и время выполнения между
Сборщик мусора (Garbage Collector) и управление памятью
Важной особенностью построения CLR является
Сборщик мусора (Garbage Collector) и управление памятью
Важной особенностью построения CLR является
Один из таких наиболее значимых компонентов CLR - сборщик мусора (Garbage Collector). Под сборкой мусора понимается освобождение памяти, занятой объектами, которые стали бесполезными и не используются в дальнейшей работе приложения.
В ряде языков программирования (классическим примером является язык C/C++) память освобождает сам программист, в явной форме отдавая команды как на создание, так и на удаление объекта. Неизбежные ошибки программиста при работе с памятью тяжелы по последствиям, и их крайне тяжело обнаружить.
В CLR задача сборки мусора снята не только с программистов, но
В CLR задача сборки мусора снята не только с программистов, но
Здесь же решаются и многие другие вопросы, связанные с использованием памяти, в частности, проверяются возможные нарушения связанные, например, с использованием указателей. Данные, удовлетворяющие требованиям CLR и допускающие сборку мусора, называются управляемыми данными.
Но, как же быть с языком C++ и другими языками, где есть указатели, адресная арифметика, возможности удаления объектов программистом? Такие возможности сохранены и в языке C#.
CLR позволяет работать как с управляемыми, так и с неуправляемыми данными. Однако использование неуправляемых данных регламентируется и не поощряется. Так, в C# модуль, использующий неуправляемые данные (указатели, адресную арифметику), должен быть помечен как небезопасный (unsafe), и эти данные должны быть четко зафиксированы.
Исключительные ситуации
Что происходит, когда при вызове некоторой функции (процедуры) обнаруживается, что
Исключительные ситуации
Что происходит, когда при вызове некоторой функции (процедуры) обнаруживается, что
Возможны разные варианты обработки такой ситуации. Функция может возвращать код ошибки или специальное значение типа HResult, может выбрасывать исключение, тип которого характеризует возникшую ошибку.
В CLR принято во всех таких ситуациях выбрасывать исключение. Косвенно это влияет и на язык программирования. Выбрасывание исключений наилучшим образом согласуется с исполнительной средой.
В языке C# выбрасывание исключений, их дальнейший перехват и обработка - основной рекомендуемый способ обработки исключительных ситуаций.
События
У CLR есть свое видение того, что представляет собой тип. Есть
События
У CLR есть свое видение того, что представляет собой тип. Есть
При возникновении событий в процессе работы с тем или иным объектом данного типа посылаются сообщения, которые могут получать другие объекты.
Механизм обмена сообщениями основан на делегатах - функциональном типе.
В язык C# встроен механизм событий, полностью согласованный с возможностями CLR.
Общие спецификации и совместимые модули
Уже говорилось, что каркас Framework.Net облегчает межъязыковое
Общие спецификации и совместимые модули
Уже говорилось, что каркас Framework.Net облегчает межъязыковое
Эти ограничения задаются набором общеязыковых спецификаций - CLS (Common Language Specification). Класс, удовлетворяющий спецификациям CLS, называется CLS-совместимым. Он доступен для использования в других языках, классы которых могут быть клиентами или наследниками совместимого класса.
Спецификации CLS точно определяют, каким набором встроенных типов можно пользоваться в совместимых модулях. Эти типы должны быть общедоступными для всех языков, использующих Framework.Net. В совместимых модулях должны использоваться управляемые данные и выполняться некоторые другие ограничения.