Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition című műből. Ezt a kiadást 2008-ban adták ki, és a könyvet azóta teljesen átdolgozták a harmadik kiadásban. Előfordulhat, hogy az oldalon található információk némelyike elavult.
Az általános célú értéktípust leggyakrabban szerkezetnek, annak C# kulcsszójának nevezik. Ez a szakasz útmutatást nyújt az általános szerkezettervezéshez.
❌ NE adjon meg paraméter nélküli konstruktort egy szerkezethez.
Az útmutató követésével strukturált tömbök hozhatók létre anélkül, hogy a konstruktort a tömb minden egyes elemén futtatnia kellene. Figyelje meg, hogy a C# nem teszi lehetővé, hogy a szerkezetek paraméter nélküli konstruktorokkal rendelkezzenek.
❌ NE definiáljon módosítható értéktípusokat.
A mutable értéktípusoknak több problémájuk is van. Ha például egy tulajdonságbeolvasó egy értéktípust ad vissza, a hívó másolatot kap. Mivel a másolat implicit módon jön létre, előfordulhat, hogy a fejlesztők nem veszik észre, hogy a másolatot módosítják, nem pedig az eredeti értéket. Bizonyos nyelvek (különösen a dinamikus nyelvek) problémásak a módosítható értéktípusok használatakor, mert még a helyi változók is, amikor lehivatkozzák őket, másolat készítését okozzák.
✔️ DO győződjön meg arról, hogy az az állapot, amelyben az összes példány adatai nullára, hamisra vagy nullra vannak állítva (adott esetben) érvényes.
Ez megakadályozza az érvénytelen példányok véletlen létrehozását a szerkezetek tömbjének létrehozásakor.
✔️ Valósítsa meg a IEquatable<T> értéktípusokon.
Az Object.Equals értéktípusok metódusa boxolást okoz, és az alapértelmezett implementációja nem túl hatékony, mert tükröződést használ. Equals sokkal jobb teljesítményt nyújthat, és úgy implementálható, hogy elkerülje a boxolást.
❌ NE bővítse ki kifejezettenValueType. Valójában a legtöbb nyelv ezt megakadályozza.
Általánosságban elmondható, hogy a szerkezetek nagyon hasznosak lehetnek, de csak olyan kis, egyetlen, nem módosítható értékekhez használhatók, amelyeket nem kell gyakran bekeretezni.
© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.
Újranyomva a Pearson Education, Inc. engedélyével, Krzysztof Cwalina és Brad Abrams Framework Design Guidelines: Konvenciók, Idiomák és Minták az Újrafelhasználható .NET Könyvtárak Számára, 2. kiadás című könyvéből, közzétéve 2008. október 22-én, a Addison-Wesley Professional által, a Microsoft Windows Fejlesztési Sorozat részeként.