Szerkezetek, mint a mező

Köztudott, hogy a szerkezet - fontos típusok, és így telt el érték. És ez lesz a probléma, ha a használni kívánt kész szerkezetek, területeken, illetve tulajdonságai osztályok. Velük, lehetetlenné válik a munka, így amikor megpróbálja módosítani néhány mezőt a szerkezet (ami egy tulajdonság vagy mező), a fordító sír hiba.

Elvileg semmi meglepő, ez a várt viselkedés, a hívó fél küldött egy példányt a struktúra és a fordító egyértelművé teszi, hogy módosítsa a másolat, de semmi hatása. Ez érthető, de mit?

Ebben az esetben módosítsa Coordinates.X külső kód lehetetlen lesz. Mi az a gyakorlat dolgozik a szerkezet mindkét szakterület / tulajdonságok? A fenti példa, hogyan kell változtatni a szerkezet?

meghatározott augusztus 11 '16 at 15:28

@YesMan: A mező nem „telt hivatkozással”. Te csak dolgozni a területen is, balérték szempontjából C ++. De getter tulajdonságokkal - ez egy közönséges függvény, ezért, mint minden funkció, mindig visszatér egy másolatot az érték érték típusú (és annak egy példányát a referencia referencia típus). - VladD augusztus 15 '16 at 17:54

A szerkezet általában szükséges annak érdekében, hogy képes elvégezni egy műveletet, az ilyen összehasonlítás vagy megbízás adatcsoport, beleértve a heterogén. Nem úgy értem, hogy a struktúrákat kell leírni az archívumban, sok problémát kell megoldani, és megoldani a struktúrák más nyelveken, a C # több sikerrel oldja meg a teljes értékű osztályok.

A forráskód System.Windows.Forms.Control osztályban. Láthatjuk a végrehajtás a tulajdonságok Méret. példaként, hogy a Microsoft használja a szerkezetet.

Mi irányítjuk a mező szélességét és magasságát. A szélesség és a magasság, mint a tulajdonságok és Size tulajdonság. hogy visszaadja a szélesség és magasság értékeket, mint az egyik System.Drawing.Size típusú szerkezet. A méret módosításához van annyi, mint két módon: állítsa be a szélesség és a magasság keresztül külön-külön az egyes tulajdonságok, vagy állítsa két méretben Ha egyszerre Size struktúrát. például másolt másik vezérlő.

Ha figyelembe vesszük a Location tulajdonság. majd megtalálja az egyes tulajdonságok az X és Y nem működik, hogy nem léteznek, de amelyet néhány területen az x és y koordináták tárolásra. Elvileg jönne szerkezeten belüli, mivel Egy adott pont koordinátáit ritkán használt külön-külön.

Véleményem - ez egy nagyon jó példa arra, hogy a gyakorlati alkalmazásának struktúrák, figyelembe véve sajátos jellemzőit.

A Microsoft a kevésbé sikeres példák, mint például Control.Font tulajdon. amely úgy tűnik, meglehetősen furcsa, hogy nem tudja megadni, például félkövér betűtípus attribútum cseréje nélkül az egész szerkezet a betűtípus. de ha jobban megnézed a forráskódot akkor láthatjuk, hogy ez a tulajdonság társul menedzselt kód WinAPI, és valószínűleg sok nem volt más választása, nem számítva természetesen irreális gyakorlatban opció „gyors vágás új API”.

Használja a rendelkezésre álló eszközök más célokra (különböző nyelveken lehet más, ez normális).

Válaszol augusztus 11 '16 at 16:27

Kapcsolódó cikkek