Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Dátové typy, Stream, StringBuilder,...

Podobné prezentace


Prezentace na téma: "Dátové typy, Stream, StringBuilder,..."— Transkript prezentace:

1 Dátové typy, Stream, StringBuilder,...

2 Dátové typy Hodnotové a referenčné

3 Typy Keyword .NET Framework Type Description
Variable Declaration Example bool System.Boolean Boolean type; a bool value is either true or false. true or false bool val1 = true; bool val2 = false; byte System.Byte 8-bit unsigned integral type 0 to 255 byte val1 = 12; char System.Char 16-bit unicode character 0 to 65535 char c = ‘a’; char c = 255; decimal System.Decimal 128-bit fixed-point decimal type with 28 significant digits -7.9e28 to 7.9e28 decimal val = 1.23M; double System.Double 64-bit double-precision floating point type -1.79e308 to 1.79e308 double val1 = 1.23; double val2 = 4.56D; float System.Single 32-bit single-precision floating point type -3.40e38 to 3.40e38 float val = 1.23F ;

4 Keyword .NET Framework Type Description Variable Declaration Example int System.Int32 32-bit signed integral type -2,147,483,648 to 2,147,483,647 int val = 12; long System.Int64 64-bit signed integral type -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 long val1 = 12; long val2 = 34L; sbyte System.SByte 8-bit signed integral type -128 to 127 sbyte val = 12; short System.Int16 16-bit signed integral type -32,768 to 32767 short val = 12; string System.String Immutable string of 16-bit Unicode characters All valid string characters string val = "Hello world." uint System.UInt32 32-bit unsigned integral type 0 to 4,294,967,296 uint val1 = 12; uint val2 = 34U; ulong System.UInt64 64-bit unsigned integral type 0 to 18,446,744,073,709,551,615 ulong val1 = 12; ulong val4 = 78UL; ushort System.UInt16 16-bit unsigned integral type 0 to 65535 ushort val1 = 12;

5 Inicializácia System.Int32 x = 5; int x = 5; x = new int(); - default i int je 0 Odkazové typy defaultne ukazujú na null

6 Operácie Typ Operátor Funkcia Príklad Arithmetic + Add x = 1 + 2; -
Subtract x = 1 - 2; * Multiply x = 1 * 2; / Divide x = 1 / 2; % Modulus x = 5 % 2; vráti Konkatenace reťazacov String concatenation string str = "Hello " + "World"; Increment/decrement ++ Increment int x = 5; int y = x++; // hodnota y je 5 // hodnota x je 6 -- Decrement int x = 5; int z = --x; // hodnota z je 4 // hodnota x je 4

7 Typ Operátor Funkcia Príklad Porovnanie, výsledok true/false == Rovný 1 == 1 would return true (1 is equal to 1) != Nerovný 1 != 1 would return false 1 != 2 would return true (1 is not equal to 2) < Menší 1 < 2 would return true (1 is less than to 2) > Väčší 2 > 1 would return true (2 is greater than to 1) <= Menší alebo rovný 1 <= 1 would return true (1 is equal to 1) >= Väčší alebo rovný 1 >= 1 would return true (1 is equal to 1) Logický && A || Alebo true false

8 Priradenie += Pripočítaj a priraď int x = 5; x += 100; // x 105; -= Odpočítaj a priraď int x = 5; x -= 100; // x 95; *= Vynásob a priraď int x = 5; x *= 100; // x 500; /= Vydeľ a priraď int x = 100; x /= 100; // x 20; %= Modulo a priraď int x = 5; x %= 100; // x 0;

9 Pretypovanie Implicitné Explicitná
Ku konverzii dôjde ak by bola bezstratová Automatická konverzia Explicitná Je nutné zadať ak môže byť strata dát (typ) hodnota int x = (int)3.5f;

10 Implicitné pretypovanie

11 Strata dát

12 Pretypovanie referenčných typov
Implicitné – Upcasting string str = "Hello World"; object obj = str; Explicitné – Downcasting castobject obj = "Hello World"; string str = (string)obj; object obj = "Hello World"; string str = (obj as string);

13 Pretypovanie hodnotového na referenčný
Boxing Vytvorenie kópie hodnoty a jej umiestnenie na heap int x = 100; object obj = x;

14 Unboxing object obj = 100; int x = (int)obj;

15 Pole Pole je referenčný typ Všetky elementy musia byť rovnakého typu Pole začína od 0

16 Deklarácia a inicializácia
Pole Deklarácia a inicializácia int[] array1; int[] array2 = new int[3]; int[] array3 = new int[3] { 0, 1, 2 }; int[] array4 = new int[] { 3, 4, 5 };

17 Jagged Array Jagged array – pole ukazateľov na polia int[][] array1 = new int[3][] {new int[3]{1,2,3}, new int[4]{4,5,6,7}, new int[5]{8,9,10,11,12}};

18 Podmienky IF Else Case return ((x == 0) ? "Hello" : "Goodbye")

19 Foreach int[] numbers = {1,4,9,16}; foreach( int i in numbers ) { Console.WriteLine(" {0}", i); }

20 Řetězce jsou implementovány primitivním referenčním typem String
tento typ je nezměnitelný jeho hodnoty jsou uloženy ve speciálních tabulkách (ne na haldě) jejich identita je dána obsahem jsou vždy inicializovány literálem, jejich konstruktor se nedá volat všechny operace se chovají tak, že vrátí nový řetězec místo, aby změnily stav stávajícího

21 Řetězce chovají se jako kolekce typu System.Char – implementují IEnumerable, mají indexer základní řetězcové operace – Concat, Substring, Replace, Insert, ToUpper, ... přetížené operátory - + (konkatenace), == (porovnání obsahů), != (různost obsahů), = (kopíruje obsah řetězce do jiného řetězce)

22 StringBuilder StringBuilder konstruktorem se vytvoří základní buffer o 16 bytech, který se prodlužuje a zkracuje podle potřeby StringBuilder sb1 = new StringBuilder();sb1 = "First string";StringBuilder sb2 = new StringBuilder("Second string");

23 String vs StringBuilder
Optimum StringBuilder String Počet konkatenací

24 Operácie StringBuilder
Method Description and Example Append StringBuilder sb2 = new StringBuilder("Second string"); sb2.Append(" Third string"); Insert StringBuilder sb2 = new StringBuilder("Second string"); sb2.Insert(0,"First string "); Remove StringBuilder sb2 = new StringBuilder("Second string"); sb2.Remove(12,6); Replace StringBuilder sb3 = new StringBuilder("I love cats"); sb3.Replace("cat","dog"); ToString StringBuilder sb1 = new StringBuilder("Click Me..."); button1.Text = sb1.ToString();

25 Výjimky Chybové stavy jsou řešeny většinou pomocí výjimek – při výjimce se přeruší vykonávání kódu, vytvoří se objekt obsahující informace a hledá se někdo, koho to zajímá (v krajním případě uživatel aplikace) speciální konstrukce v jazyce umožňují vyjádřit zájem na daném místě kódu převzít informaci o výjimce a nějak ji zpracovat

26 tato poskytuje základní vlastnosti a kořen hierarchie
Třídy výjimek Informace o výjimce se předávají prostřednictví speciálních tříd, které dědí od třídy System.Exception tato poskytuje základní vlastnosti a kořen hierarchie vlasnosti – Message, Source, StackTrace, TargetSite, InnerException slovník Data – dodatečné informace jako dvojice klíč hodnota (může je přidávat i uživatel)

27 všechny vlastnosti jsou read-only
System.Exception má čtyři konstruktory defaultní bez parametrů s jedním parametrem typu string s jedním parametrem typu string a jedním typu Exception protected konstruktor pro deserializaci všechny vlastnosti jsou read-only

28 Hierarchie výjimek

29 konstrukce try blok catch blok finally blok kód se vykonává
Chytání výjimek konstrukce try blok catch blok finally blok kód se vykonává vykonává se try blok a pokud se dojde na jeho konec, předá se řízení do finally pokud dojde k výjimce přeskočí se na začátek příslušného catch bloku a pak se pokračuje jako v 1. vykoná se finally blok

30 Chytání výjimek je možné vynechat catch blok nebo finally blok, ale ne oba příkaz catch může být specifický – pak je tvaru catch (typ [identifikátor]) platí, že při vzniku výjimky se řízení předá do prvního specifického bloku catch, jehož typ je typem vytvořeného objektu výjimky. typ musí být odvozen od System.Exception

31 obvykle za sebe řadíme specifické catch bloky se vzrůstající obecností
Chytání výjimek obvykle za sebe řadíme specifické catch bloky se vzrůstající obecností pokud není výjimka zachycena ve funkci, kde vznikla nebo je znovu vyhozena, je předána nadřízené funkci, to se děje tak dlouho dokud není zpracována v krajním případě je předána runtimu, který ji zpracuje tak, že ukončí běh programu a uživatele informuje o výjimce, která nebyla v programu zpracována.

32 Vnořené bloky try je možné do sebe bloky try vnořovat : try { //A //B
} catch { //C finally { //uklid } //D catch { // osetreni chyb } bod A – rizeni se preda bloku catch na konci bod B – provede se C, pak se provede finally pak se to preda do D; pokud se nezachyti, provede se finally a da se to do vnejsiho catch bloku bod C – provede se finally a pak se preda do vnejsiho catche, totez pokud je to v bloku finally

33 Výjimku je možné vygenerovat pomocí příkazu throw vyjimka
Příkaz throw Výjimku je možné vygenerovat pomocí příkazu throw vyjimka vyjimka je jakýkoliv výraz, který je typu odvozeného od System.Exception typicky se použije výraz s operátorem new nebo reference na předpřipravený objekt výjimky throw new Exception(“Vyjimka“); bez parametru slouží k přeposlání výjimky dál (částečné zpracování) pokud vyhazujeme výjimku v catch bloku, použijeme vlastnost InnerException třídy System.Exception k uložení výjimky, kterou jsme zpracovávali GetBaseException, vyjimky pak tvori linked list

34 Bloky finally kód v nich se provede vždy, i když došlo v bloku try k výjimce používají se k úklidu (zavření souborů a podobně) a jiným nezbytným akcím místo dvojice try...finally, kde se v bloku try alokují zdroje a v bloku finally uvolňují lze použít konstrukci

35 Príklad komplexného ošetrenia Exception

36 Regulární výrazy jsou reprezentovány třídou System.Text.RegularExpressions.RegEx jsou to speciální řetězce, které slouží k vyhledávání a nahrazování podřetězců v jiných řetězcích jsou kompatibilní s PERL5 regulárními výrazy

37 Regulární výrazy základní typ je prostě podřetězec – “abab”, najde řetězec, obsahující právě tyto znaky v tomto pořadí lze vytvářet složitější typy vkládáním speciálních znaků například znaky pro polohu v řetězci ^, $ - začátek a konec řádku, \z – konec řetězce, \b – začátek slova, např “^abc$”

38 znaky pro speciální znaky –
Regulární výrazy znaky pro speciální znaky – \t – tab, \n – newline, \u0020 – unicodový znak s číslem 32 např. “^ab\u0022\n” znaky pro opakování – píší se za znak a určují, že se musí(může) v příslušném řetězci opakovat a kolikrát – *(0 nebo více), +(1 nebo více), ?(0 nebo 1), {n}, {n,}, {n,m} (n, n nebo více, mezi n a m) normálně je hladové (hledá nejdelší podřetězec), přidáním dalšího otazníku se změní na líné (nejkratší)

39 Regulární výrazy znaky pro typy znaků – pokud je na příslušné pozici znak z příslušného seznamu nebo příslušného typu . – jakýkoliv jeden znak, x|y – znak x nebo y, [xyz] – kterýkoliv z x, y a z, [a-z] – rozsah typy - \d – číslice, \D nečíslice, \s – whitespace ap.

40 Regex objIntPattern=new Regex("^-[0-9]+$|^[0-9]+$");
Matches/Match string t14 = " test 1 test 2.3 test 47 "; string p14 MatchCollection mc14 = Regex.Matches(t14, p14); Regular Expression Library:

41 System.Convert

42 Vstup a výstup – souborový systém
BCL obsahuje množství tříd, které umožňují pracovat se souborovým systémem jsou ve jmenném prostoru System.IO základní třídy jsou FileSystemInfo, FileInfo, DirectoryInfo a DriveInfo. Reprezentují různé prvky systému souborů.

43 Práce se soubory a adresáři
FileInfo a DirectoryInfo mají konstruktor, kterému se předá cesta k souboru nebo k adresáři mají instanční metody, které implementují operace na souborovém systému – kopírování, vytváření, přesouvání, otvírání a podobně existují třídy File a Directory, které poskytují stejnou funkcionalitu, ale jejich příslušné metody jsou statické a cesty k souborům se jim předávají jako parametry priklad

44 Třída Path pomocná třída pro práci s řetězci obsahujícími cesty k souborům metody jako ChangeExtension, GetExtension, GetPathRoot, HasExtension – pracují s řetězcem cesty metoda GetTempFileName – založí dočasný soubor a vrátí cestu k němu

45 třída, která umožňuje sledovat změny v daném adresáři
FileSystemWatcher třída, která umožňuje sledovat změny v daném adresáři má konstruktor, kterému předáme cestu k adresáři má vlastnost Filter, která obsahuje masku, jaké soubory se mají sledovat vlastnost NotifyFilter určuje, které události se mají sledovat události Changed, Created, Deleted a Renamed typu FileSystemEventHandler


Stáhnout ppt "Dátové typy, Stream, StringBuilder,..."

Podobné prezentace


Reklamy Google