Objektumok (Programming Guide c #), a Microsoft docs
Ebben a cikkben,
Meghatározása egy osztály vagy hasonló szerkezetű a rajzokon, amely meghatározza az által végrehajtott műveleteket a típus. Lényegében, az objektum egy memóriában blokk kiosztott és konfigurálva megfelelően a rajzon. A program létrehoz a különböző tárgyak az azonos osztályban. Tárgyak is nevezik példányok. Ezek tárolható akár nevű változó vagy egy tömb vagy gyűjtemény. Ügyfél-kód - a kód, amely ezeket a változókat metódusokat és elérheti, hogy nyissa ki az objektum tulajdonságait. Az objektum-orientált nyelv, mint a C #, a standard program áll, több dinamikusan kölcsönható tárgyakat.
megjegyzés
A viselkedés a statikus típus eltér a viselkedést az itt leírt. További információkat. Lásd: Statikus osztályok és a statikus osztály tagjait.
Másolatok szerkezete példányok és osztályok
Példányainak osztályok jönnek létre az új üzemeltető. A következő példa egy személy típus és person1 és személyenként 2 - vagy példányait ilyen típusú objektum.
Mivel a szerkezetek érték típusok, a változó objektum szerkezetét tárolt példányát az egész objektumot. Másolatai struktúrák is létrehozhatók az új üzemben. azonban ez nem kötelező, ahogy az alábbi példa:
Memória P1 és P2 osztják a verem áramlását. Ez a memória szabadul együtt típusától vagy az eljárás, amelyben megállapították. Ez az egyik oka annak, hogy a szerkezetek másolt feladat. Éppen ellenkezőleg, amikor a kimeneti az összes hivatkozást a körét a tárgy, a CLR automatikusan memóriát szabadít fel (végez szemétgyűjtő), a kiválasztott például. Az a lehetőség, determinisztikus megsemmisítése a objektumosztály, kapható a C ++, hiányzik itt. További információ a szemétgyűjtő a .NET Framework, lásd. A Garbage Collection.
megjegyzés
A közepes CLR folyamat memória kiosztása és felszabadítás a kezelt halom nagymértékben optimalizálva. A legtöbb esetben nincs lényeges különbség a teljesítési költségei elosztásának például az osztály a halom és elosztása fokon szerkezete a verem.
Azonosítása tárgyak és értékek az egyenlőség
Összehasonlítva a két objektum az egyenlőség, először meg kell határoznia, hogy meg kell tudni, vannak-e két változó egy objektum memóriában vagy értékek közül egy vagy több mező egyenlő. Ha szeretné összehasonlítani az értékeket, el kell döntenie, hogy az objektum egy példánya érték típusok (szerkezetek) vagy a referencia típusok (osztályok, küldöttek, tömbök).
Annak meghatározására, hogy a két esetben az egyik memóriahely hivatkozható (azaz, azonos ID), használja a statikus módszer Eredmény. (System.Object implicit osztályok számára minden érték típusú és hozzáférési típusokat, beleértve a szerkezeteket és osztályok a felhasználó által definiált).
Annak meghatározására, hogy a példány mezők párhuzamosban szerkezete azonos értékű, használja a ValueType.Equals. Mivel minden struktúrák implicit származó System.ValueType. módszer lehet nevezni közvetlenül a tárgy, amint az a következő példa:
A végrehajtás használt System.ValueType Egyenlő tükrözi, hiszen meg kell határozni a területen rendelkezésre álló bármilyen szerkezet. Amikor létrehozza saját minták felülírják az egyenlő módszer, hogy egy hatékony algoritmust egyenlőség, a típusát.
- Annak eldöntésére, hogy a mezők értékeit a két esetben az osztály megegyezik, akkor az egyenlő módszer vagy a == operátor. Ezek azonban csak akkor szabad használni, ha azokat felülírják vagy túlterhelt osztály, hogy az egyéni meghatározása egyenlőség ilyen típusú objektum. Az osztály is végre interfész IEquatable
vagy interfész IEqualityComparer . Mindkét felület biztosítja módszereket lehet használni, hogy ellenőrizze az egyenlő értékeket. Amikor létrehozza saját osztályokat, felülírás Egyenlő. el kell végeznie az utasításokat a szakaszok gyakorlati útmutató. Meghatározása értékek típusának egyenlőség és Object.Equals (Object).