Top Banner
eleks.com eleks.com .NET Platform. C# Basics Main differences from C++
20

.NET Platform. C# Basics

Jan 21, 2018

Download

Technology

eleksdev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: .NET Platform. C# Basics

eleks.com eleks.com

.NET Platform. C# BasicsMain differences from C++

Page 2: .NET Platform. C# Basics

Що таке .NET?

1. Уніфікована, інтегрована технологічна платформа, випущена Microsoft в 2002

2. Сучасний, потужний та зручний у використанні інструментарій для розробки та

підтримки программного забезпечення

3. Ідеологія проектування та реалізація програмного забезпечення

4. Модель ефективної підтримки життєвого циклу прикладних систем

Page 3: .NET Platform. C# Basics

5 ключових переваг .NET

1. Підтримка численних мов програмування (C#, Managed C++, Visual Basic, F#...)

2. Обширна бібліотека базових класів

3. Спільний для всіх мов механізм виконання

4. Мовна інтеграція. В .NET підтримується міжмовне наслідування

5. Сервісні можливості для розробника (відлагодження, аналіз коду, …) однакові для

всіх мов

Page 4: .NET Platform. C# Basics

Стек технологій.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

WFCard

Space

Entity

Framework

LINQ

Task Parallel

Library

PLINQ

.NET APIs for

Store/UWP apps

.NET APIs for

Store/UWP apps

Page 5: .NET Platform. C# Basics

Головні компоненти .NET

Бібліотека базових класів

Безпека

Web

XML/SOAP

Інше

Доступ до БД

Потоки

Віконні форми

Ввід-вивід

CLR – спільне середовище виконання

CTS – спільна система типів CLS – спільна специфікація мов

Page 6: .NET Platform. C# Basics

Базові терміни

NET компілятор – компілює вихідний код в CIL (Common Intermediate Language).

Збірка – двійковий файл, що підтримує версії, самоописує себе і обслуговується оточенням CLR(Common Language Runtime). Окрім CIL коду в збірці міститься різноманітна службоваінформація, наприклад: інформація про зовнішні збірки (залежності), структура включених в неїтипів і т. п.

JIT компілятор – виконує перетворення коду MSIL в машинні команди по мірі викликупідпрограм (фрагментами). На виході утворюється так званий керований код, який потімвиконується в середовищі CLR.

Керований код – це такий, що містить метадані, які дозволяють CLR виконувати перевіркубезпеки, контроль прав, контроль версій, збір мусору і т. п.

Page 7: .NET Platform. C# Basics

Схема компіляції в 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"

Page 8: .NET Platform. C# Basics

eleks.com

Демонстрація 1• Компіляція в *.dll файл• Компіляція в *.exe файл

Page 9: .NET Platform. C# Basics

Схема виконання в CLR.

Page 10: .NET Platform. C# Basics

eleks.com

Демонстрація 2• Перегляд проміжного коду.

Page 11: .NET Platform. C# Basics

Універсальна система типів (UTS)тип

Типи - значення Типи - посилання Вказівники

enum structПрості типи

boolchar

sbyteshort

intlong

byteushort

uintulong

floatdoubledecimal

Class Interface Array Delegate

Типи, визначені користувачем

Page 12: .NET Platform. C# Basics

Вбудовані типи даних CTSCTS 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

Page 13: .NET Platform. C# Basics

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()

Page 14: .NET Platform. C# Basics

Garbage collector C#• Автоматичне виділення

пам’яті

• Автоматичне очищення пам’яті

1

• Механізм оптимізації звільнення ресурсів

• Видалення об’єктів при необхідності

2

• Швидкодія розробки3

Page 15: .NET Platform. C# Basics

Garbage collector C#

A B C E F G H I

Вказівник нанаступний елемент

A B E G H

Вказівник нанаступний елемент

До:

Після:

Page 16: .NET Platform. C# Basics

Ключові відмінності 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++

Page 17: .NET Platform. C# Basics

Ключові відмінності C# і C++C#

• C# в конструкції обробки виняткових ситуаціймістить додатковий блок finally якийвиконується при будь-яких випадках.

• Не має концепції вказівників на функції. C # маєаналогічну концепцію під назвою delegates.

• Підтримує множинне наслідування інтерфейсів

• Формальні синтаксичні конструкції дляінтерфейсів, делегатів

• Підтримує програмування на основі атрибутів

• Дає можливість писати розширення (extensions)для класів

• C++ не підтримує блок finally в конструкції обробкивиняткових ситуацій.

• Має концепцію вказівників на функції

• Підтримує множинне наслідування класів

• Синтаксичні конструкції для інтерфейсів, делегатіввідсутні

• Не підтримує атрибути

• Не має такої можливості

C++

Page 18: .NET Platform. C# Basics

Наслідування

Інкапсуляція

Поліморфізм

© Denys Prylutskyi, 2015

Підсумки

•Value and Reference types

•Перевизначення методів1

•Boxing, Unboxing

•Явне та неявне приведення типів.

•Втрата даних2

•Абстрактні класи, інтерфейси:

•Різниця між інтерфейсами та абстр.класами.

•Наслідування інтерфейсів.

3

•Equals, GetHashCode

•Garbage collector (brief overview)4

Page 19: .NET Platform. C# Basics

© Denys Prylutskyi, 2015

Практичне завдання

“Talk is cheap. Show me the code.”- Linus Torvalds

Page 20: .NET Platform. C# Basics

Рекомендована література

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