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 I I I
int X byte X char X
Tóth Zsolt (Miskolci Egyetem)
public enum Currency { HUF, EUR, USD, AUD, YEN };
Generikus Típusok, Kollekciók
2013
3 / 26
Enumeráció
private Currency _currency; private double _amount;
Típus Paraméter Nyilvánosság
public Money(double amount, Currency currency){...}
Elérheto˝ Értékek megadhatóak
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
Adatstruktúrák
Újrahasznosíthatóság Típus mint paraméter I I I I I
Listák Tömbök
Struktúra Osztály Interface Delegátum Esemény
Halmazok Fák Gráfok
Tipikusan tároló osztályok ˝ Típus ellenorzés Típus nem lehet I I
˝ Ososztály Interface
Tóth Zsolt (Miskolci Egyetem)
Map-pek Stack Queue class MyArray {...}
Generikus Típusok, Kollekciók
2013
6 / 26
Generikus Adattag
class MyArray Paraméter Típus használható { private T[] _array; ˝ nem ismert típus Elore . Általános használat . Rugalmasság . }
Tóth Zsolt (Miskolci Egyetem)
Generikus Típusok, Kollekciók
2013
7 / 26
Generikus Metódus
˝ nem ismert típusú Elore paraméterek Visszatérési érték Argumentum
Tóth Zsolt (Miskolci Egyetem)
public T Get(int index) {...} public void Set(int index, T t) {...}
Generikus Típusok, Kollekciók
2013
8 / 26
Megszorítások
Megszorítás where T : struct where T : class where T : new() ˝ where T : where T :
Jelentés T–nek érték típusúnak kell lennie T–nek referencia típusúnak kell lennie T–nek kell publikus paraméter nélkülis konstruktor ˝ T–nek az ososztályból kell származnia T–nek implementálnia kell az interface–t
˝ 1. táblázat. Generikus típusok megszorítási lehetosé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 I I I I
Concurent Generic ObjectModel Specialized
Interface–ek I I I I
ICollection IComparer IEnumerable IEnumerator
Tóth Zsolt (Miskolci Egyetem)
Osztályok ArrayList CollectionBase Comparer DictionaryBase HashTable Queue SortedList Queue
Generikus Típusok, Kollekciók
2013
11 / 26
IComparer
Összehasonlítást ír elo˝ 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
Tóth Zsolt (Miskolci Egyetem)
public interface IComparer{ int Compare( Object x, Object y ) }
Generikus Típusok, Kollekciók
2013
12 / 26
IEnumerator
Kollekciók bejárása
Egyedi bejárás
Minden elem egyszer
Saját bejáró osztály Metódusok
foreach Property I
Current : Object
Tóth Zsolt (Miskolci Egyetem)
I I
Generikus Típusok, Kollekciók
MoveNext() : bool Reset() : void
2013
13 / 26
IEnumerable
Interface Bejárható osztály
Tóth Zsolt (Miskolci Egyetem)
public interface IEnumerable{ IEnumerator GetEnumerator(); }
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
Névtér Collections generikus elemei
Generikus Struktúrák
List
Rugalmasság
HashSet
Hatékonyság Újra felhasználható elemek
Dictionary Queue Stack
Tóth Zsolt (Miskolci Egyetem)
Generikus Típusok, Kollekciók
2013
16 / 26
List
Tulajdonságok Lista Dinamikus méret ˝ Tetszoleges típusok Properties Capacity Count Item
Tóth Zsolt (Miskolci Egyetem)
Metódusok Add Remove RemoveAll Clear Reverse Sort(Comaper) Exsists ToArray
Generikus Típusok, Kollekciók
2013
17 / 26
HashSet
Metódusok
Tulajdonságok
Add
Objektumok halmaza
Remove
Egyediség
Clear
IEqualityComparer Saját összehasonlító osztály Properties Comparer Count
Tóth Zsolt (Miskolci Egyetem)
Contains SetEquals IsSubsetOf IsSupersetOf UnionWith
Generikus Típusok, Kollekciók
2013
18 / 26
Dictionary Tulajdonságok Asszociatív tömb Leképzés Kulcs → érték Kulcs egyedi KeyValuePair Properties Comparer Count Keys Values
Tóth Zsolt (Miskolci Egyetem)
Metódusok Add Remove Clear ContainsKey ContainsValue KeyValuePair foreach Key Value
Generikus Típusok, Kollekciók
2013
19 / 26
Queue
Metódusok Tulajdonságok First In First Out Properties Count
Enqueue Dequeue Peek Clear Contains ToArray
Tóth Zsolt (Miskolci Egyetem)
Generikus Típusok, Kollekciók
2013
20 / 26
Stack
Metódusok Tulajdonságok
Push
Last In First Out
Pop
Verem
Peek
Properties
Clear
Count
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 I I
Egyszeru˝ típusok Objektumok
Referenciák ? ˝ Hozzáférhetoség I I
Nyilvánosság X 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 Megegyezo˝ állapot bitenkénti másolás (bit–to–bit copy) Érték típusok X Referencia típusok X 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
Tóth Zsolt (Miskolci Egyetem)
1. ábra. Shallow Copy
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
Tóth Zsolt (Miskolci Egyetem)
2. ábra. Deep Copy
Generikus Típusok, Kollekciók
2013
26 / 26