Разделы презентаций


C# и.NET Framework

Содержание

Автор материала: Семён Факторович, НГУоф. сайт курса: http://bit.ly/nsudotnet

Слайды и текст этой презентации

Слайд 1C# и .NET Framework

C# и .NET Framework

Слайд 2Автор материала: Семён Факторович, НГУ
оф. сайт курса: http://bit.ly/nsudotnet

Автор материала: Семён Факторович, НГУоф. сайт курса: http://bit.ly/nsudotnet

Слайд 3Программа на сегодня
Основные особенности C#: почему деструкторы больше не нужны?

Применение

в индустрии: на чем написан движок stackoverflow.com?

Кросс-платформенность: как запустить один

и тот же код под Win, Linux и Mac OS?

Программа на сегодняОсновные особенности C#: почему деструкторы больше не нужны?Применение в индустрии: на чем написан движок stackoverflow.com?Кросс-платформенность:

Слайд 4Язык C#



C# [си-шарп] — объектно-ориентированный язык со строгой типизацией.

Язык C#C# [си-шарп] — объектно-ориентированный язык со строгой типизацией.

Слайд 5Язык C#
Первая версия языка – 2002 год, Microsoft

2006, C# 2.0:

Generics
2007, C# 3.0: Lambda functions
2010, C# 4.0, асинхронные методы
2012, С#

5.0, “compiler as a service”
Язык C#Первая версия языка – 2002 год, Microsoft2006, C# 2.0: Generics2007, C# 3.0: Lambda functions2010, C# 4.0,

Слайд 6Синтаксис языка
using System;
namespace Course
{
class Program
{

static void Main(string[] args)
{

Console.WriteLine("Hello world!");
}
}
}
Синтаксис языкаusing System;namespace Course{  class Program  {    static void Main(string[] args)

Слайд 7Фишки языка
Встроенный тип object, от которого наследуются все другие типы
string

s = "Test";
object o = (object)s;

Фишки языкаВстроенный тип object, от которого наследуются все другие типыstring s =

Слайд 8Фишки языка
Встроенный тип object, от которого наследуются все другие типы
int

i = 3;
object o2 = (object)i;

Фишки языкаВстроенный тип object, от которого наследуются все другие типыint i = 3;object o2 = (object)i;

Слайд 9Фишки языка
Встроенный тип object, от которого наследуются все другие типы
int

i = 3;
object o2 = (object)i;

Фишки языкаВстроенный тип object, от которого наследуются все другие типыint i = 3;object o2 = (object)i;

Слайд 10Фишки языка
Встроенный тип object, от которого наследуются все другие типы
string

s2 = (2+3).ToString();

Фишки языкаВстроенный тип object, от которого наследуются все другие типыstring s2 = (2+3).ToString();

Слайд 11Фишки языка
Никакого delete





Выделенная память высвобождается сборщиком мусора (garbage collector)
string[] array

= new string[10];
array[1] = "abc";

// delete[] array;


Фишки языкаНикакого deleteВыделенная память высвобождается сборщиком мусора (garbage collector)string[] array = new string[10];array[1] =

Слайд 12Фишки языка
Рефлексия (reflection)

string s

= "test";
if (s.GetType() ==

typeof(string))
{
// ...
}

Фишки языкаРефлексия (reflection)      string s =

Слайд 13Фишки языка
Рефлексия (reflection)


string s

= "test";
if (s.GetType() ==

typeof(string))
{
// ...
}

if (s is string)
{
// ...
}

Фишки языкаРефлексия (reflection)      string s =

Слайд 14Фишки языка
Рефлексия (reflection)








string s

= "test";
Type type = s.GetType();

string name = type.Name; // "String"



Слайд 15Фишки языка
Рефлексия (reflection)


string s

= "test";
Type type = s.GetType();

string memberName =

type.GetMembers()[3].Name; // Join()"

Слайд 16Фишки языка
Рефлексия (reflection)


Type myType

= Reflection.Emit.TypeBuilder.
GetType("System.String");


object obj =

Activator.CreateInstance(myType);


string str = (string)obj;

Фишки языкаРефлексия (reflection)      Type myType = Reflection.Emit.TypeBuilder.		GetType(

Слайд 17Фишки языка
LINQ

int[] numbers = {5, 4, 1, 3, 9};

IEnumerable lowNums = from n in numbers

where n < 5
select n;

// {4, 1, 3}
Фишки языкаLINQ int[] numbers = {5, 4, 1, 3, 9}; IEnumerable lowNums = from n in numbers

Слайд 18Фишки языка
LINQ

int[] numbers = {5, 4, 1, 3, 9};

IEnumerable lowNums = from n in numbers

where n < 5
select n;

// lowNums содержит {4, 1, 3}

// Эквивалентно
lowNums = numbers.Where(n => n < 5);
Фишки языкаLINQ int[] numbers = {5, 4, 1, 3, 9}; IEnumerable lowNums = from n in numbers

Слайд 19Фишки языка

Фишки языка

Слайд 20Фишки языка
Делегаты: замена указателям на функции


delegate

int MyDelegate(int i);
int Square(int arg)

{
return arg * arg;
}
void MyMethod()
{
MyDelegate del = Square;
int res = del.Invoke(3);
int res2 = del(4);
}

Фишки языкаДелегаты: замена указателям на функции    delegate int MyDelegate(int i);    int

Слайд 21Фишки языка
Автоматический вывод типа переменной


var dict = new Dictionary

List>();

// Вместо
Dictionary dict =
new Dictionary()

Фишки языкаАвтоматический вывод типа переменнойvar dict = new Dictionary();// ВместоDictionary dict = new Dictionary()

Слайд 22Фишки языка
Встроенная система исключений


Фишки языкаВстроенная система исключений

Слайд 23Фишки языка
Богатая стандартная библиотека

Работа с высокоуровневыми сетевыми протоколами (XML, SMTP,

HTTP)
Криптография
Сериализация объектов
Работа с файловой системой
Работа с базами данных

Фишки языкаБогатая стандартная библиотекаРабота с высокоуровневыми сетевыми протоколами (XML, SMTP, HTTP)КриптографияСериализация объектовРабота с файловой системойРабота с базами

Слайд 24Что еще умеет язык?
Консольные приложения

GUI: Windows Forms и WPF

Web development:

ASP.NET и ASP.NET MVC

Web&mobile apps: Silverlight

Что еще умеет язык?Консольные приложенияGUI: Windows Forms и WPFWeb development: ASP.NET и ASP.NET MVCWeb&mobile apps: Silverlight

Слайд 25Что на нём пишут?

Enterprise (десктопные и серверные бизнес-приложения под ключ)

Web

development

Windows Phone



Что на нём пишут?Enterprise (десктопные и серверные бизнес-приложения под ключ)Web developmentWindows Phone

Слайд 26А что хорошего уже написано?
stackoverflow.com

C# 3.5, ASP.NET MVC, Windows Server

2008

google: stackoverflow architecture

MySpace

C# 2.0, ASP.NET

google: myspace architecture

А что хорошего уже написано?stackoverflow.com	C# 3.5, ASP.NET MVC, Windows Server 2008google: stackoverflow architectureMySpaceC# 2.0, ASP.NETgoogle: myspace architecture

Слайд 27Фишки языка

C# - JIT-компилируемый язык


Фишки языкаC# - JIT-компилируемый язык

Слайд 28JIT-компиляция


Компилируемые языки


Интерпретируемые языки


JIT-компиляцияКомпилируемые языкиИнтерпретируемые языки

Слайд 29JIT-компиляция


Компилируемые языки

С, С++, Pascal
Исходный код переводится в машинные коды
Машинный код

исполняется процессором
Не запустится на другой процессорной архитектуре (а также на

другой ОС)


JIT-компиляцияКомпилируемые языкиС, С++, PascalИсходный код переводится в машинные кодыМашинный код исполняется процессоромНе запустится на другой процессорной архитектуре

Слайд 30JIT-компиляция


Интерпретируемые языки

PHP, Perl, Python, Ruby, JavaScript
Исходный код исполняется интерпретатором
Запустится на

любой архитектуре и в любой ОС, был бы интерпретатор
Как правило,

медленнее компилируемых языков


JIT-компиляцияИнтерпретируемые языкиPHP, Perl, Python, Ruby, JavaScriptИсходный код исполняется интерпретаторомЗапустится на любой архитектуре и в любой ОС, был

Слайд 31JIT-компиляция


JIT-компилируемые языки

C#, Java
Исходный код компилируется в байт-код
Среда исполнения переводит байт-код

в машинный код для данного процессора
Как правило, не медленнее компилируемых

языков


JIT-компиляцияJIT-компилируемые языкиC#, JavaИсходный код компилируется в байт-кодСреда исполнения переводит байт-код в машинный код для данного процессораКак правило,

Слайд 32JIT-компиляция

Важные моменты

Байткод не привязан к архитектуре и ОС (platform-agnostic)
Есть и

компилятор, есть и среда исполнения
Среда исполнения не интерпретирует байткод, а

целиком (или по крайней мере, большими порциями) переводит его в машинный код


JIT-компиляцияВажные моментыБайткод не привязан к архитектуре и ОС (platform-agnostic)Есть и компилятор, есть и среда исполненияСреда исполнения не

Слайд 33JIT-компиляция

Важные моменты

Байткод, который генерит компилятор C# - intermediate language, IL

В

Windows скомпилированный IL-файл имеет расширение *.exe


JIT-компиляцияВажные моментыБайткод, который генерит компилятор C# - intermediate language, ILВ Windows скомпилированный IL-файл имеет расширение *.exe

Слайд 34JIT-компиляция
PE header
CLR metadata
IL bytecode
.NET executable

JIT-компиляцияPE headerCLR metadataIL bytecode.NET executable

Слайд 35JIT-компиляция

Важные моменты

На клиентских машинах должен быть установлен .NET Framework
Начиная с

Windows XP SP2 он установлен по умолчанию
В Windows Vista, Windows

7 и во всех Windows Server он уже есть



JIT-компиляцияВажные моментыНа клиентских машинах должен быть установлен .NET FrameworkНачиная с Windows XP SP2 он установлен по умолчаниюВ

Слайд 36Структура .NET Framework
Байт-код – intermediate language

Среда исполнения байт-кода – CLR,

Common Language Runtime

Помимо конвертации байт-кода CLR отвечает за:
Управление памятью
Создание и

управление исключениями (exceptions)
Управление потоками (threads)
Структура .NET FrameworkБайт-код – intermediate languageСреда исполнения байт-кода – CLR, Common Language RuntimeПомимо конвертации байт-кода CLR отвечает

Слайд 38Расширяемость .NET


Открытая спецификация C#

CLI, Common Language Infrastructure: открытая спецификация IL

и принципов работы среды исполнения IL

Расширяемость .NETОткрытая спецификация C#CLI, Common Language Infrastructure: открытая спецификация IL и принципов работы среды исполнения IL

Слайд 39Расширяемость .NET


Любой желающий может написать компилятор любого языка в IL


Расширяемость .NETЛюбой желающий может написать компилятор любого языка в IL

Слайд 41Расширяемость .NET


Любой желающий может написать компилятор любого языка в IL

C#,

Visual Basic .NET, J#

Python, Ruby, Fortran, F#, Nemerle, Scala…

Расширяемость .NETЛюбой желающий может написать компилятор любого языка в ILC#, Visual Basic .NET, J#Python, Ruby, Fortran, F#,

Слайд 42Расширяемость .NET

Полезный бонус:

Спецификация обязывает каждый .NET-совместимый язык реализовывать одну и

ту же базовую систему типов

CTS, Common Type System

Расширяемость .NETПолезный бонус:Спецификация обязывает каждый .NET-совместимый язык реализовывать одну и ту же базовую систему типовCTS, Common Type

Слайд 43Расширяемость .NET


Используете IronPython – имеете ту же систему базовых типов,

что и в C#

String, работа с массивами, threading...

Расширяемость .NETИспользуете IronPython – имеете ту же систему базовых типов, что и в C#String, работа с массивами,

Слайд 44Расширяемость .NET


Дальше – больше!

Можно написать свою реализацию CLR (среды исполнения

IL)

.NET Framework и Microsoft CLR – одна из реализаций CLI

Расширяемость .NETДальше – больше!Можно написать свою реализацию CLR (среды исполнения IL).NET Framework и Microsoft CLR – одна

Слайд 45Расширяемость .NET


Mono Project, www.mono-project.com

Реализация среды исполнения IL для Linux и

Mac OS X

Расширяемость .NETMono Project, www.mono-project.comРеализация среды исполнения IL для Linux и Mac OS X

Слайд 46Кросс-платформенность

Кросс-платформенность

Слайд 47Кросс-платформенность

Кросс-платформенность

Слайд 48Кросс-платформенность

Кросс-платформенность

Слайд 49Кросс-платформенность

Кросс-платформенность

Слайд 50Расширяемость .NET


Mono Project, www.mono-project.com

Реализация среды исполнения IL для Windows и

Linux

Реализация абсолютно полноценная (в т.ч. кроссплатформенный GUI)

Расширяемость .NETMono Project, www.mono-project.comРеализация среды исполнения IL для Windows и LinuxРеализация абсолютно полноценная (в т.ч. кроссплатформенный GUI)

Слайд 51Расширяемость .NET


Mono Project, www.mono-project.com

Реализация среды исполнения IL для Windows и

Linux

Руководитель разработки – Miguel de Icaza, создатель Gnome и Midnight

Commander

Расширяемость .NETMono Project, www.mono-project.comРеализация среды исполнения IL для Windows и LinuxРуководитель разработки – Miguel de Icaza, создатель

Слайд 52Еще немного полезностей
Существует диалект С++, компилируемый в IL: C++/CLI

Программу на

C# можно собрать в форме DLL и пользоваться ей, как

обычной библиотекой

А можно и наоборот: подключать нативные DLL к программам на C#


Еще немного полезностейСуществует диалект С++, компилируемый в IL: C++/CLIПрограмму на C# можно собрать в форме DLL и

Слайд 53И еще немного терминологии


Код, переводимый в IL и выполняемый CLR

– managed code, управляемый код

Нативный код (например, вызываемый из внешних

DLL) – unmanaged code


И еще немного терминологииКод, переводимый в IL и выполняемый CLR – managed code, управляемый кодНативный код (например,

Слайд 54Ок, а в чем писать-то?
1. Microsoft Visual Studio
Рекомендуется подавать с

плагином Resharper
http://jetbrains.com/resharper
2. Mono Develop
Работает в Linux и Mac OS X
3.

Вызов компилятора из командной строки: csc.exe
csc /out:My.exe File.cs
google: csc.exe





Ок, а в чем писать-то?1. Microsoft Visual StudioРекомендуется подавать с плагином Resharperhttp://jetbrains.com/resharper2. Mono Develop	Работает в Linux и

Слайд 55В следующей серии
Синтаксис C# и типичные конструкции языка


Понятие ссылки, или

куда делись указатели?


Reference vs. value types

В следующей серииСинтаксис C# и типичные конструкции языкаПонятие ссылки, или куда делись указатели?Reference vs. value types

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика