SlideShare a Scribd company logo
1 of 20
eleks.comeleks.com
.NET Platform. C# Basics
Main differences from C++
Що таке .NET?
1. Уніфікована, інтегрована технологічна платформа, випущена Microsoft в 2002
2. Сучасний, потужний та зручний у використанні інструментарій для розробки та
підтримки программного забезпечення
3. Ідеологія проектування та реалізація програмного забезпечення
4. Модель ефективної підтримки життєвого циклу прикладних систем
5 ключових переваг .NET
1. Підтримка численних мов програмування (C#, Managed C++, Visual Basic, F#...)
2. Обширна бібліотека базових класів
3. Спільний для всіх мов механізм виконання
4. Мовна інтеграція. В .NET підтримується міжмовне наслідування
5. Сервісні можливості для розробника (відлагодження, аналіз коду, …) однакові для
всіх мов
Стек технологій
.NET Framework 2.0
(2002)
3.0
(2006)
3.5
(2007)
4.0
(2010)
4.5
(2012)
ASP
.NET
ADO
.NET
Win
Forms
Framework Class Library
Common Language Runtime
WPF WCF
WF
Card
Space
Entity
Framework
LINQ
Task Parallel
Library
PLINQ
.NET APIs for
Store/UWP apps
.NET APIs for
Store/UWP apps
Головні компоненти .NET
Бібліотека базових класів
Безпека
Web
XML/SOAP
Інше
Доступ до БД
Потоки
Віконні форми
Ввід-вивід
CLR – спільне середовище виконання
CTS – спільна система типів CLS – спільна специфікація мов
Базові терміни
NET компілятор – компілює вихідний код в CIL (Common Intermediate Language).
Збірка – двійковий файл, що підтримує версії, самоописує себе і обслуговується оточенням CLR
(Common Language Runtime). Окрім CIL коду в збірці міститься різноманітна службова
інформація, наприклад: інформація про зовнішні збірки (залежності), структура включених в неї
типів і т. п.
JIT компілятор – виконує перетворення коду MSIL в машинні команди по мірі виклику
підпрограм (фрагментами). На виході утворюється так званий керований код, який потім
виконується в середовищі CLR.
Керований код – це такий, що містить метадані, які дозволяють CLR виконувати перевірку
безпеки, контроль прав, контроль версій, збір мусору і т. п.
Схема компіляції в CLR.
1. Компіляція файла HelloWorld.cs в файл HelloWorld.dll:
csc.exe /target:library /out:"D:/HelloWorld.dll" "D:/HelloWorld.cs“
2. Компіляція файла HelloWorld.cs і створення файла HelloWorld.exe:
csc.exe /out: "D:/HelloWorld.exe" "D:/HelloWorld.cs"
eleks.com
Демонстрація 1
• Компіляція в *.dll файл
• Компіляція в *.exe файл
Схема виконання в CLR.
eleks.com
Демонстрація 2
• Перегляд проміжного коду.
Універсальна система типів (UTS)
тип
Типи - значення Типи - посилання Вказівники
enum structПрості типи
bool
char
sbyte
short
int
long
byte
ushort
uint
ulong
float
double
decimal
Class Interface Array Delegate
Типи, визначені користувачем
Вбудовані типи даних CTS
CTS VB. NET C# Managed Extensions for C++
System.Byte Byte byte unsigned char
System.SByte SByte sbyte signed char
System.Int16 Short short short
System.Int32 Integer int int or long
System.Int64 Long long __int64
System.Uint16 UShort ushort unsigned short
System.Uint32 UInteger uint unsigned int або unsigned long
System.Object Object object Object^
System.Uint64 ULong ulong unsigned __int64
System.Single Single float Float
System.Double Double double Double
System.Char Char char wchar_t^
System.String String string String^
System.Decimal Decimal decimal Decimal
System.Boolean Boolean bool Bool
Object
Reference types
Sub-types
Value types
Sub-types
Вбудовані типи даних CTS
public string ToString()
public bool Equals(object obj)
public int GetHashCode()
public Type GetType()
public static bool ReferenceEquals(object objA, object objB)
public static bool Equals(object objA, object objB)
protected object MemberwiseClone()
protected virtual void Finalize()
Garbage collector C#
• Автоматичне виділення
пам’яті
• Автоматичне очищення
пам’яті
1
• Механізм оптимізації
звільнення ресурсів
• Видалення об’єктів при
необхідності
2
• Швидкодія розробки3
Garbage collector C#
A B C E F G H I
Вказівник на
наступний елемент
A B E G H
Вказівник на
наступний елемент
До:
Після:
Ключові відмінності C# і C++
C#
• Мова програмування високого рівня.
• Компілюється в проміжний код, після чого за
допомогою Just-In-Time у виконуваний.
• Вивільненням пам'ятті керує Garbage Collector.
• C# структури можуть містити тільки Value Type.
• Делегати, події і властивості можуть бути
визначені як члени класу.
• Модифікатори доступу в C#: public, private,
protected, internal, protected internal.
• Мова програмування низького рівня.
• Компілюється в assembler-код.
• Динамічною пам'яттю керує програміст.
• C++ структури мають поведінку таку ж як класи, але
доступ за замовчуванням є публічним, а не
приватним.
• Членами класу можуть бути лише змінні,
конструктори, функції, оператор перевантаження і
деструктори.
• Модифікатори доступу в C++: public, private,
protected. C++ не підтримує внутрішні і захищені
модифікатори доступу всередині однієї зібрки.
C++
Ключові відмінності C# і C++
C#
• C# в конструкції обробки виняткових ситуацій
містить додатковий блок finally який
виконується при будь-яких випадках.
• Не має концепції вказівників на функції. C # має
аналогічну концепцію під назвою delegates.
• Підтримує множинне наслідування інтерфейсів
• Формальні синтаксичні конструкції для
інтерфейсів, делегатів
• Підтримує програмування на основі атрибутів
• Дає можливість писати розширення (extensions)
для класів
• C++ не підтримує блок finally в конструкції обробки
виняткових ситуацій.
• Має концепцію вказівників на функції
• Підтримує множинне наслідування класів
• Синтаксичні конструкції для інтерфейсів, делегатів
відсутні
• Не підтримує атрибути
• Не має такої можливості
C++
Наслідування
Інкапсуляція
Поліморфізм
© Denys Prylutskyi, 2015
Підсумки
•Value and Reference types
•Перевизначення методів
1
•Boxing, Unboxing
•Явне та неявне приведення типів.
•Втрата даних
2
•Абстрактні класи, інтерфейси:
•Різниця між інтерфейсами та абстр.класами.
•Наслідування інтерфейсів.
3
•Equals, GetHashCode
•Garbage collector (brief overview)
4
© Denys Prylutskyi, 2015
Практичне завдання
“Talk is cheap. Show me the code.”
- Linus Torvalds
Рекомендована література
1. A. Troelsen “C# 6.0 and the .NET 4.6 Framework”
2. H. Schildt “C# 4.0 The Complete Reference”
3. J. Richter “CLR via C#”
4. J. Skeet “C# in Depth”
5. Stackoverflow.com
Лектор: Maksym Muratov, 2016

More Related Content

What's hot

Windows service
Windows serviceWindows service
Windows serviceeleksdev
 
G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2eleksdev
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styleseleksdev
 
Web service lecture
Web service lectureWeb service lecture
Web service lectureeleksdev
 
11 web services
11 web services11 web services
11 web serviceseleksdev
 
Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentationeleksdev
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. ProcessesAndrii Hladkyi
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. ThreadsAndrii Hladkyi
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basicseleksdev
 
Data Structures
Data StructuresData Structures
Data Structureseleksdev
 
System programing module 2
System programing module 2System programing module 2
System programing module 2Andrii Hladkyi
 
Net framework and C# module 17. Serialization
Net framework and  C# module 17. SerializationNet framework and  C# module 17. Serialization
Net framework and C# module 17. SerializationAndrii Hladkyi
 
System programing module 1
System programing module 1System programing module 1
System programing module 1Andrii Hladkyi
 
System programing module 3
System programing module 3System programing module 3
System programing module 3Andrii Hladkyi
 
NET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. InterfacesNET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. InterfacesAndrii Hladkyi
 

What's hot (20)

Windows service
Windows serviceWindows service
Windows service
 
G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styles
 
Web service lecture
Web service lectureWeb service lecture
Web service lecture
 
11 web services
11 web services11 web services
11 web services
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Xdebug (ukr)
Xdebug (ukr)Xdebug (ukr)
Xdebug (ukr)
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. Processes
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. Threads
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basics
 
Data Structures
Data StructuresData Structures
Data Structures
 
System programing module 2
System programing module 2System programing module 2
System programing module 2
 
Net framework and C# module 17. Serialization
Net framework and  C# module 17. SerializationNet framework and  C# module 17. Serialization
Net framework and C# module 17. Serialization
 
System programing module 1
System programing module 1System programing module 1
System programing module 1
 
System programing module 3
System programing module 3System programing module 3
System programing module 3
 
NET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. InterfacesNET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. Interfaces
 
Design patterns part 2
Design patterns part 2Design patterns part 2
Design patterns part 2
 
cpp-2013 #20 Best practices
cpp-2013 #20 Best practicescpp-2013 #20 Best practices
cpp-2013 #20 Best practices
 

Viewers also liked

#2 integration + ui tests
#2 integration + ui tests#2 integration + ui tests
#2 integration + ui testseleksdev
 
Code Practices
Code PracticesCode Practices
Code Practiceseleksdev
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joinseleksdev
 
#4 code quality
#4 code quality#4 code quality
#4 code qualityeleksdev
 
Frontend basics
Frontend basicsFrontend basics
Frontend basicseleksdev
 
C++ Basics
C++ BasicsC++ Basics
C++ Basicseleksdev
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Roleeleksdev
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n editedeleksdev
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summaryeleksdev
 
Design patterns
Design patternsDesign patterns
Design patternseleksdev
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patternseleksdev
 
If unit2 summary
If unit2 summaryIf unit2 summary
If unit2 summaryeleksdev
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Roleeleksdev
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkpeleksdev
 
Advanced C++ concepts
Advanced C++ conceptsAdvanced C++ concepts
Advanced C++ conceptseleksdev
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operatoreleksdev
 
Communication in android
Communication in androidCommunication in android
Communication in androideleksdev
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 apieleksdev
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practiceseleksdev
 

Viewers also liked (20)

#2 integration + ui tests
#2 integration + ui tests#2 integration + ui tests
#2 integration + ui tests
 
Code Practices
Code PracticesCode Practices
Code Practices
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joins
 
#4 code quality
#4 code quality#4 code quality
#4 code quality
 
tsql
tsqltsql
tsql
 
Frontend basics
Frontend basicsFrontend basics
Frontend basics
 
C++ Basics
C++ BasicsC++ Basics
C++ Basics
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Role
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n edited
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summary
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patterns
 
If unit2 summary
If unit2 summaryIf unit2 summary
If unit2 summary
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Role
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkp
 
Advanced C++ concepts
Advanced C++ conceptsAdvanced C++ concepts
Advanced C++ concepts
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operator
 
Communication in android
Communication in androidCommunication in android
Communication in android
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 api
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practices
 

Similar to .NET Platform. C# Basics

лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаютьсяcit-cit
 
Мови програмування
Мови програмуванняМови програмування
Мови програмуванняAlyona Tribko
 
Programne zabezpechenna
Programne zabezpechennaProgramne zabezpechenna
Programne zabezpechenna1cana1
 
програміст (1)
програміст (1)програміст (1)
програміст (1)123467890qq
 
Programne zabezpechenna(pz)
Programne zabezpechenna(pz)Programne zabezpechenna(pz)
Programne zabezpechenna(pz)Oksana Kutsenko
 
Системне програмне забезпечення
Системне програмне забезпеченняСистемне програмне забезпечення
Системне програмне забезпеченняbondarvm
 
Изучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded SystemИзучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded Systemitconnect2016
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1CDN_IF
 
V24 com to_net
V24 com to_netV24 com to_net
V24 com to_netRingonoki
 
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk "Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk Fwdays
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...lisovvolod
 
проект з інформатики
проект з інформатикипроект з інформатики
проект з інформатикиliliya2896
 
мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)raprap1
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 

Similar to .NET Platform. C# Basics (20)

лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
 
Мови програмування
Мови програмуванняМови програмування
Мови програмування
 
розробка-програм
розробка-програмрозробка-програм
розробка-програм
 
Programne zabezpechenna
Programne zabezpechennaProgramne zabezpechenna
Programne zabezpechenna
 
програміст (1)
програміст (1)програміст (1)
програміст (1)
 
C#- Лекція 1
C#- Лекція 1C#- Лекція 1
C#- Лекція 1
 
Programne zabezpechenna(pz)
Programne zabezpechenna(pz)Programne zabezpechenna(pz)
Programne zabezpechenna(pz)
 
Системне програмне забезпечення
Системне програмне забезпеченняСистемне програмне забезпечення
Системне програмне забезпечення
 
Изучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded SystemИзучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded System
 
Coding for Future in Lutsk. JavaScript. Part 1
Coding for Future in Lutsk. JavaScript. Part 1Coding for Future in Lutsk. JavaScript. Part 1
Coding for Future in Lutsk. JavaScript. Part 1
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1
 
V24 com to_net
V24 com to_netV24 com to_net
V24 com to_net
 
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk "Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk
"Vulnerabilities Analysis: Corporate DevSec Practices", Sergii Kulyk
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
Web 5
Web 5Web 5
Web 5
 
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML.  Форматуванн...
Module_01.pdf (Модуль 1. Вступ до вебтехнологій. Структура HTML. Форматуванн...
 
проект з інформатики
проект з інформатикипроект з інформатики
проект з інформатики
 
мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)
 
Ak 11kl urok_13_tema
Ak 11kl urok_13_temaAk 11kl urok_13_tema
Ak 11kl urok_13_tema
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 

More from eleksdev

Hello android world
Hello android worldHello android world
Hello android worldeleksdev
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors APIeleksdev
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basicseleksdev
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1eleksdev
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Roleeleksdev
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
sql introduction
sql introductionsql introduction
sql introductioneleksdev
 

More from eleksdev (8)

Hello android world
Hello android worldHello android world
Hello android world
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors API
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basics
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Role
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
sql introduction
sql introductionsql introduction
sql introduction
 

Recently uploaded

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?Oleksandr Romanov
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 

Recently uploaded (6)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 

.NET Platform. C# Basics

  • 1. eleks.comeleks.com .NET Platform. C# Basics Main differences from C++
  • 2. Що таке .NET? 1. Уніфікована, інтегрована технологічна платформа, випущена Microsoft в 2002 2. Сучасний, потужний та зручний у використанні інструментарій для розробки та підтримки программного забезпечення 3. Ідеологія проектування та реалізація програмного забезпечення 4. Модель ефективної підтримки життєвого циклу прикладних систем
  • 3. 5 ключових переваг .NET 1. Підтримка численних мов програмування (C#, Managed C++, Visual Basic, F#...) 2. Обширна бібліотека базових класів 3. Спільний для всіх мов механізм виконання 4. Мовна інтеграція. В .NET підтримується міжмовне наслідування 5. Сервісні можливості для розробника (відлагодження, аналіз коду, …) однакові для всіх мов
  • 4. Стек технологій .NET Framework 2.0 (2002) 3.0 (2006) 3.5 (2007) 4.0 (2010) 4.5 (2012) ASP .NET ADO .NET Win Forms Framework Class Library Common Language Runtime WPF WCF WF Card Space Entity Framework LINQ Task Parallel Library PLINQ .NET APIs for Store/UWP apps .NET APIs for Store/UWP apps
  • 5. Головні компоненти .NET Бібліотека базових класів Безпека Web XML/SOAP Інше Доступ до БД Потоки Віконні форми Ввід-вивід CLR – спільне середовище виконання CTS – спільна система типів CLS – спільна специфікація мов
  • 6. Базові терміни NET компілятор – компілює вихідний код в CIL (Common Intermediate Language). Збірка – двійковий файл, що підтримує версії, самоописує себе і обслуговується оточенням CLR (Common Language Runtime). Окрім CIL коду в збірці міститься різноманітна службова інформація, наприклад: інформація про зовнішні збірки (залежності), структура включених в неї типів і т. п. JIT компілятор – виконує перетворення коду MSIL в машинні команди по мірі виклику підпрограм (фрагментами). На виході утворюється так званий керований код, який потім виконується в середовищі CLR. Керований код – це такий, що містить метадані, які дозволяють CLR виконувати перевірку безпеки, контроль прав, контроль версій, збір мусору і т. п.
  • 7. Схема компіляції в CLR. 1. Компіляція файла HelloWorld.cs в файл HelloWorld.dll: csc.exe /target:library /out:"D:/HelloWorld.dll" "D:/HelloWorld.cs“ 2. Компіляція файла HelloWorld.cs і створення файла HelloWorld.exe: csc.exe /out: "D:/HelloWorld.exe" "D:/HelloWorld.cs"
  • 8. eleks.com Демонстрація 1 • Компіляція в *.dll файл • Компіляція в *.exe файл
  • 11. Універсальна система типів (UTS) тип Типи - значення Типи - посилання Вказівники enum structПрості типи bool char sbyte short int long byte ushort uint ulong float double decimal Class Interface Array Delegate Типи, визначені користувачем
  • 12. Вбудовані типи даних CTS CTS VB. NET C# Managed Extensions for C++ System.Byte Byte byte unsigned char System.SByte SByte sbyte signed char System.Int16 Short short short System.Int32 Integer int int or long System.Int64 Long long __int64 System.Uint16 UShort ushort unsigned short System.Uint32 UInteger uint unsigned int або unsigned long System.Object Object object Object^ System.Uint64 ULong ulong unsigned __int64 System.Single Single float Float System.Double Double double Double System.Char Char char wchar_t^ System.String String string String^ System.Decimal Decimal decimal Decimal System.Boolean Boolean bool Bool
  • 13. Object Reference types Sub-types Value types Sub-types Вбудовані типи даних CTS public string ToString() public bool Equals(object obj) public int GetHashCode() public Type GetType() public static bool ReferenceEquals(object objA, object objB) public static bool Equals(object objA, object objB) protected object MemberwiseClone() protected virtual void Finalize()
  • 14. Garbage collector C# • Автоматичне виділення пам’яті • Автоматичне очищення пам’яті 1 • Механізм оптимізації звільнення ресурсів • Видалення об’єктів при необхідності 2 • Швидкодія розробки3
  • 15. Garbage collector C# A B C E F G H I Вказівник на наступний елемент A B E G H Вказівник на наступний елемент До: Після:
  • 16. Ключові відмінності C# і C++ C# • Мова програмування високого рівня. • Компілюється в проміжний код, після чого за допомогою Just-In-Time у виконуваний. • Вивільненням пам'ятті керує Garbage Collector. • C# структури можуть містити тільки Value Type. • Делегати, події і властивості можуть бути визначені як члени класу. • Модифікатори доступу в C#: public, private, protected, internal, protected internal. • Мова програмування низького рівня. • Компілюється в assembler-код. • Динамічною пам'яттю керує програміст. • C++ структури мають поведінку таку ж як класи, але доступ за замовчуванням є публічним, а не приватним. • Членами класу можуть бути лише змінні, конструктори, функції, оператор перевантаження і деструктори. • Модифікатори доступу в C++: public, private, protected. C++ не підтримує внутрішні і захищені модифікатори доступу всередині однієї зібрки. C++
  • 17. Ключові відмінності C# і C++ C# • C# в конструкції обробки виняткових ситуацій містить додатковий блок finally який виконується при будь-яких випадках. • Не має концепції вказівників на функції. C # має аналогічну концепцію під назвою delegates. • Підтримує множинне наслідування інтерфейсів • Формальні синтаксичні конструкції для інтерфейсів, делегатів • Підтримує програмування на основі атрибутів • Дає можливість писати розширення (extensions) для класів • C++ не підтримує блок finally в конструкції обробки виняткових ситуацій. • Має концепцію вказівників на функції • Підтримує множинне наслідування класів • Синтаксичні конструкції для інтерфейсів, делегатів відсутні • Не підтримує атрибути • Не має такої можливості C++
  • 18. Наслідування Інкапсуляція Поліморфізм © Denys Prylutskyi, 2015 Підсумки •Value and Reference types •Перевизначення методів 1 •Boxing, Unboxing •Явне та неявне приведення типів. •Втрата даних 2 •Абстрактні класи, інтерфейси: •Різниця між інтерфейсами та абстр.класами. •Наслідування інтерфейсів. 3 •Equals, GetHashCode •Garbage collector (brief overview) 4
  • 19. © Denys Prylutskyi, 2015 Практичне завдання “Talk is cheap. Show me the code.” - Linus Torvalds
  • 20. Рекомендована література 1. A. Troelsen “C# 6.0 and the .NET 4.6 Framework” 2. H. Schildt “C# 4.0 The Complete Reference” 3. J. Richter “CLR via C#” 4. J. Skeet “C# in Depth” 5. Stackoverflow.com Лектор: Maksym Muratov, 2016