C# dokumentáció

Page 196

using System; class Program { static public void Main() { unsafe { int x = 10; void* p1 = &x; Console.WriteLine( *((int*)p1) ); } }

}

Egy struktúrára is hivatkozhatunk pointerrel, ekkor a tagjait kétféleképpen érhetjük el: vagy a mutatón keresztül, vagy a nyíl (->) operátorral amely tulajdonképpen az előbbi rövidítése: using System; struct Test { public int x; } class Program { static public void Main() { unsafe { Test t = new Test(); t.x = 10; Test* p = &t; Console.WriteLine((*p).x); // 10 Console.WriteLine(p->x); // 10 } }

}

29.1 Fix objektumok Normális esetben a szemétgyűjtő a memória töredezettség mentesítése érdekében mozgatja az objektumokat a memóriában. Egy pointer azonban mindig egy fix helyre mutat, hiszen a mutatott objektumnak a címét kértük le, ami pedig nem fog frissülni. Ez néhány esetben gondot okozhat (pl. amikor hosszabb ideig van a memóriában a mutatott adat, pl. valamilyen erőforrás). Ha szeretnénk, hogy az objektumok a helyükön maradjanak, akkor a fixed kulcsszót kell használnunk. Mielőtt jobban megnéznénk a fixed–et vegyük szemügyre a következő forráskódot:

- 196 -


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.