Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26
Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 2 / 26
Enumeráció Egyedi értékek Konstansok nevek Enumerációs lista Érték int byte char X public enum Currency { HUF, EUR, USD, AUD, YEN }; Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 3 / 26
Enumeráció Típus Paraméter Nyilvánosság Elérhető Értékek megadhatóak private Currency _currency; private double _amount; public Money(double amount, Currency currency){...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 4 / 26
Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 5 / 26
Generikus Típusok Object osztály Újrahasznosíthatóság Típus mint paraméter Struktúra Osztály Interface Delegátum Esemény Tipikusan tároló osztályok Típus ellenőrzés Típus nem lehet Ősosztály Interface Adatstruktúrák Listák Tömbök Halmazok Fák Gráfok Map-pek Stack Queue class MyArray<T> {...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 6 / 26
Generikus Adattag Paraméter Típus használható Előre nem ismert típus Általános használat Rugalmasság class MyArray<T> { private T[] _array;... } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 7 / 26
Generikus Metódus Előre nem ismert típusú paraméterek Visszatérési érték Argumentum public T Get(int index) {...} public void Set(int index, T t) {...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 8 / 26
Megszorítások Megszorítás Jelentés where T : struct T nek érték típusúnak kell lennie where T : class T nek referencia típusúnak kell lennie where T : new() T nek kell publikus paraméter nélkülis konstruktor where T : <ősosztály> T nek az ősosztályból kell származnia where T : <interface> T nek implementálnia kell az interface t 1. táblázat. Generikus típusok megszorítási lehetőségei Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 9 / 26
Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 10 / 26
System.Collections Névtér Kollekciókat tartalmaz Névterei Concurent Generic ObjectModel Specialized Interface ek ICollection IComparer IEnumerable IEnumerator Osztályok ArrayList CollectionBase Comparer DictionaryBase HashTable Queue SortedList Queue Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 11 / 26
IComparer Összehasonlítást ír elő Számos implementáció (Comparer) Saját implementáció Visszatérési érték negatív x < y 0 x = y pozitív x > y public interface IComparer{ int Compare( Object x, Object y ) } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 12 / 26
IEnumerator Kollekciók bejárása Minden elem egyszer foreach Property Current : Object Egyedi bejárás Saját bejáró osztály Metódusok MoveNext() : bool Reset() : void Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 13 / 26
IEnumerable Interface Bejárható osztály public interface IEnumerable{ IEnumerator GetEnumerator(); } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 14 / 26
Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 15 / 26
System.Collections.Generic Generikus Struktúrák Rugalmasság Hatékonyság Újra felhasználható elemek Névtér Collections generikus elemei List<T> HashSet<T> Dictionary<TKey,TValue> Queue<T> Stack<T> Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 16 / 26
List<T> Tulajdonságok Lista Dinamikus méret Tetszőleges típusok Properties Capacity Count Item Metódusok Add Remove RemoveAll Clear Reverse Sort(Comaper) Exsists ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 17 / 26
HashSet<T> Tulajdonságok Objektumok halmaza Egyediség IEqualityComparer Saját összehasonlító osztály Properties Comparer Count Metódusok Add Remove Clear Contains SetEquals IsSubsetOf IsSupersetOf UnionWith Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 18 / 26
Dictionary<TKey,TValue> Tulajdonságok Asszociatív tömb Leképzés Kulcs érték Kulcs egyedi KeyValuePair Properties Comparer Count Keys Values Metódusok Add Remove Clear ContainsKey ContainsValue KeyValuePair foreach Key Value Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 19 / 26
Queue<T> Tulajdonságok First In First Out Properties Count Metódusok Enqueue Dequeue Peek Clear Contains ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 20 / 26
Stack<T> Tulajdonságok Last In First Out Verem Properties Count Metódusok Push Pop Peek Clear Contains ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 21 / 26
Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 22 / 26
Másolás Eredeti Másolat Saját állapot Egyszerű típusok Objektumok Referenciák? Hozzáférhetőség Nyilvánosság Módosíthatóság? Object osztály MemberwiseClone() Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 23 / 26
MemberwiseClone protected Object MemberwiseClone() Objektum másolás Megegyező állapot bitenkénti másolás (bit to bit copy) Érték típusok Referencia típusok Hivatkozott objektum X Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 24 / 26
Shallow Copy Gyors Olcsó Bitenkénti másolás Hivatkozott objektum nem másolódik! Biztonsági kérdések Módosíthatóság 1. ábra. Shallow Copy Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 25 / 26
Deep Copy Lassú Költséges Hivatkozott objektumok másolása! Biztonságos Másolat csak másolatban módosíthat 2. ábra. Deep Copy Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 26 / 26