Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaÁrpád Szabó Megváltozta több, mint 10 éve
1
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz
2
2 Itt nem készül másolat a hallgatóról, az ArrayList csak a referenciát (4 byte) tárolja el magában… ArrayList t = new ArrayList(); Hallgato p = new Hallgato(); p.Nev = ”Pistike”; t.Add( p ); ArrayList t = new ArrayList(); Hallgato p = new Hallgato(); p.Nev = ”Pistike”; t.Add( p ); p.Nev = ”Lajoska”; Hallgato m = (Hallgato)t[0]; Console.WriteLine( m.Nev ); // Lajoska p.Nev = ”Lajoska”; Hallgato m = (Hallgato)t[0]; Console.WriteLine( m.Nev ); // Lajoska
3
3 Az Object típus referencia-elvű… class ArrayList { public void Add( Object x ) {... } class ArrayList { public void Add( Object x ) {... } int a = 11; t.Add( a ); // ??? int a = 11; t.Add( a ); // ??? Az ‘int’ viszont value type … int a = 11; Object o = a; int a = 11; Object o = a; Mivel minden típus (az ‘int’ is) kompatibilis az Object- el, ezért o=a értékadás típushelyes. De mi történik?
4
4 Amikor egy value type értéket akarunk berakni egy referencia-típusú változóba, akkor egy speciális eljárás történik: BOXING. A value type értékről egy másolat készül valahol a memóriában, és a referencia változóba bekerül ennek a címe. int a = 11; Object o = a; int a = 11; Object o = a; cím 11 o o a a
5
5 Fordított irányba történő értékadás során visszamáso- lódik az érték a value type változóba: UNBOXING. int a = 11; Object o = a; // másolat, boxing a = 23;... Int b = (int)o; // unboxing int a = 11; Object o = a; // másolat, boxing a = 23;... Int b = (int)o; // unboxing A ‘b’ értéke az eredeti 11 lesz!
6
6 ArrayList t = new ArrayList(); int a = 11; t.Add( a ); a = 25;... int b = (int)t[0]; // 11 lesz ! ArrayList t = new ArrayList(); int a = 11; t.Add( a ); a = 25;... int b = (int)t[0]; // 11 lesz ! Az ArrayList nem túl takarékos sok int érték tárolására, mert minden int-hez (4 byte) készül egy referencia is (+4 byte)
7
7 A Boxing és Unboxing műveletek automatikusan (implicit) módon történnek. Csak érdekességképpen jegyeztük meg, hogy léteznek...
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.