Bázové třídy platformy.net

Podobné dokumenty
Úvod Přetěžování Generika Kolekce Konec. Programování v C# Další jazykové konstrukce. Petr Vaněček 1 / 31

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Kolekce, cyklus foreach

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy

David Bednárek Jakub Yaghob Filip Zavoral.

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu

Reaktivní programování v.net

Jakub Čermák Microsoft Student Partner

Jazyk C# (seminář 6)

Jazyk C# (seminář 3)

PROGRAMOVÁNÍ PRO MS WINDOWS 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 19.2.

Jazyk C# a platforma.net

Komponenty v.net. Obsah přednášky

Jazyk C# (seminář 5)

David Bednárek Jakub Yaghob Filip Zavoral.

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Generické programování

ADT/ADS = abstraktní datové typy / struktury

IRAE 07/08 Přednáška č. 7. Začátek (head)

Zápis programu v jazyce C#

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Jakub Čermák Microsoft Student Partner

Abstraktní datové typy: zásobník

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C# (seminář 3)

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

SOUBORY, VSTUPY A VÝSTUPY

Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Základní algoritmy v praxi

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Seznámení s prostředím dot.net Framework

Java pro programátory.net

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

boolean hasnext() Object next() void remove() Kolekce

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

První kapitola úvod do problematiky

Programovací jazyk Úvod do programování v C#

Čipové karty Lekařská informatika

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PREPROCESOR POKRAČOVÁNÍ

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

Současné trendy vývoje aplikací pro platformu ios

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

PB161 Programování v jazyce C++ Přednáška 5

Jazyk C# - přístup k datům

Nové jazykové brány do Caché. Daniel Kutáč

Abstraktní datové typy

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Šablony, kontejnery a iterátory

1 Knihovní funkce Skupina funkcí bool Skupina funkcí String Testovací program ELDEC Interface X.XX Example...

Návrh softwarových systém. Návrh softwarových systémů

PB161 Programování v jazyce C++ Přednáška 8

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Uklízení odpadků a analýza úniku

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Šablony, kontejnery a iterátory

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Principy objektově orientovaného programování

PB161 Programování v jazyce C++ Přednáška 4

Programovací jazyk C# Úvod do programování v C#

Jazyk C# - přístup k datům

JAZYK C# ÚVOD. Literatura. Jazyk C# .NET Framework

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Novinky ve Visual Studio Tomáš Kroupa

Programování v C++ 2, 8. cvičení

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27

Java pro programátory.net

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

přetížení operátorů (o)

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

PB161 Programování v jazyce C++ Přednáška 10

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Úvod do programovacích jazyků (Java)

Jazyk C# přednáška 01. Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Distribuované systémy a výpočty

Projekty pro výuku programování v jazyce Java

UJO Framework. revoluční architektura beans. verze

Vláknové programování část V

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Návrhové vzory OMO, LS 2014/2015

Nové prvky jazyka C# 2.0

Programovací jazyk C# Úvod do programování v C#

Transkript:

07 Strana 1

Obsah přednášky BCL Správa paměti v.netu IDisposable Kolekce Streamy Strana 2

BCL Base Class Libary základní sada knihoven frameworku jádro je v mscorlib.dll Obsahuje základní datové typy datové struktury vykonává I/O Informace o načtených typech Security Text Kolekce Threading Výčet není kompletní! Strana 3

Jak je Base Class Library organizována Assemblies Organizována do jednotlivých namespaces Příklady System System.Collections System.Diagnostics System.Globalization System.IO System.Security System.Text System.Threading Výčet není kompletní! Strana 4

Směr komunikace Strana 5

.NET CoreCLR Strana 6

Obsah přednášky BCL Správa paměti v.netu IDisposable Kolekce Streamy Strana 7

Správa paměti v.net Garbage Collector Alokace/dealokace v režii CLR (Common Language Runtime) Reprezentováno komponentou Garbage Collector Třída System.GC Periodicky odstraňuje objekty bez reference Využívá systém generací Kolekci je možná vynutit GC.Collect(); private void AllocateMemory() { //Memory is going to be released when execution //leaves the scope of method var wastedmemory = new string('x', 100000000); } I v.net je nutné řešit memory-leak (zapomenuté reference) Strana 8

Správa paměti v.net - Finalizace Ekvivalent destruktorů v jazyce C Volá se před smazáním objektu ~ClassWithFinalizer() { //Cleanup code } Slouží jako poslední šance k uklizení externích zdrojů (viz Dispose), lépe je ale uklidit explicitně! Složitý či blokující finalizační kód degraduje výkon Pozor na výjimky Finalizér je možné potlačit, či naplánovat znovu GC.ReRegisterForFinalize(this); GC.SuppressFinalize(this); Strana 9

Obsah přednášky BCL Správa paměti v.netu IDisposable Kolekce Streamy Strana 10

IDisposable Rozhraní pro objekty vyžadující explicitní úklid Metoda void Dispose(); Využívá např. Component, Stream, SqlConnection, Pokud objekt drží jiné disposable objekty, sám by měl disposable implementovat Na volání metody Dispose z kontextu finalizace existuje vzor (viz dále) Strana 11

IDisposable implementační vzor pro finalizaci Strana 12

Obsah přednášky BCL Správa paměti v.netu IDisposable Kolekce Streamy Strana 13

Kolekce - přehled Negenerické Rozhraní - IEnumerable, IEnumerator, IComparer, IEqualityComparer, IHashCodeProvider ICollection, IList, IDictionary Implementace - BitArray, ArrayList, SortedList, HashTable, Queue, Stack Speciální NameValueCollection, OrderedDictionary, ListDictionary, HybridDictionary Bázové CollectionBase, DictionaryBase Generické Rozhranní IEnumerable<T>, IEnumerator<T>, IComparer<T>, IEqualityComparer<T> ICollection<T>, IList<T>, IDictionary<TKey,TItem>, IReadOnlyCollection<T>, IReadOnlyDictionary<TKey,TItem>, ISet<T> Implementace List<T>, SortedList<T>, LinkedList<T>, Dictionary<TKey,TItem>, SortedDictionary<TKey,TItem>, HashSet<T>, Queue<T>, Stack<T> Bázové Comparer<T>, Collection<T>, ReadOnlyCollection<T> Výčet není kompletní! Strana 14

Rozhraní Strana 15

Kolekce - Enumerace Procházení kolekcí prvek za prvkem na základě IEnumerable/IEnumerable<T> Umožňuje použít klíčové slovo foreach string[] strings = new string[] { "Hello", "World!" }; foreach (string str in strings) { Console.WriteLine(str); } Enumeraci je možné ovládat pomocí instance enumerátoru IEnumerator<string> enumerator = strings.getenumerator(); string str = enumerator.current; bool success = enumerator.movenext(); Enumeraci je možné implementovat pomocí IEnumerator/IEnumerator<T> nebo jednodušeji pomocí klíčového sousloví yield return <value>; Strana 16

Ukázkové použití enumerátoru string samplestring = "Hello"; // Because string implements IEnumerable, we can call GetEnumerator(): IEnumerator enumerator = samplestring.getenumerator(); while (enumerator.movenext()) { char samplechar = (char)enumerator.current; Console.Write(sampleChar + "."); } // Output: H.e.l.l.o. Strana 17

Kolekce Implementace enumerátoru public class MyGenCollection : IEnumerable<int> { int[] data = { 1, 2, 3 }; public IEnumerator<int> GetEnumerator() { foreach (int i in data) yield return i; } } // Explicit implementation IEnumerator IEnumerable.GetEnumerator() { // keeps it hidden. return GetEnumerator(); } Strana 18

ICollection, IObservableCollection public interface ICollection<T> : IEnumerable<T>, IEnumerable { void Add(T item); void Clear(); bool Contains(T item); void CopyTo(T[] array, int arrayindex); bool Remove(T item); int Count { get; } bool IsReadOnly { get; } } IObservableCollection Analogické INotifyPropertyChange Notifikuje mi změnu počtu Strana 19

Kolekce praktické ukázky // Example 1 DoBasicCollectionOperations examples.basiccollectionoperations.dobasiccollectionoperations(); Console.ReadKey(); //Example 2 - ArrayList, List<T>, IEnumerable, IEnumerable<T> examples.listenumeration(); Console.ReadKey(); //Example 3 - Enumerator manipulation examples.usingenumerator(); Console.ReadKey(); //Example 4 - Implementation of custom enumeration examples.customenumerator(); Console.ReadKey(); //... Strana 20

Obsah přednášky BCL Správa paměti v.netu IDisposable Kolekce Streamy Strana 21

Použití using (Stream s = new FileStream("test.txt", FileMode.Create)) { Console.WriteLine(s.CanRead); // True Console.WriteLine(s.CanWrite); // True Console.WriteLine(s.CanSeek); // True s.writebyte(101); s.writebyte(102); byte[] block = { 1, 2, 3, 4, 5 }; s.write(block, 0, block.length); // Write block of 5 bytes Console.WriteLine(s.Length); // 7 Console.WriteLine(s.Position); // 7 //... Strana 22

Compressions streams using (Stream s = File.Create("compressed.bin")) { // DeflateStream == decorator using (Stream ds = new DeflateStream(s, CompressionMode.Compress)) { for (byte i = 0; i < 100; i++) { ds.writebyte(i); } } } Strana 23

Operace se soubory a adresáři Operace se soubory a adresáři BCL obsahuje předpřipravené třídy File, Directory, FileInfo, DirectoryInfo IsolatedStorage Standardizovaná cesta pro ukládání dat desktopových aplikací Zabezpečený přístup V uživatelské složce Unikátní na assembly Strana 24

Reference BCL.NET Framework Class Library Overview.NET Core zdrojové kódy Base Class Libraries.NET Framework Class Library Nástroje dotpeek Free.NET Decompiler and Assembly Browser LINQPad Design patterns C# in Nutshell Strana 25