Megosztás a következőn keresztül:


Szerkezettervezés

Feljegyzés

Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms és Patterns for Reusable .NET Libraries, 2nd Edition engedélyével. 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 tudják, hogy a másolat nem az eredeti értéket, hanem a másolást mutálják. Egyes nyelvek (különösen a dinamikus nyelvek) esetében is problémák merülnek fel a mutable értéktípusok használata során, mert még a helyi változók is, ha elhalasztják, 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.

✔️ DO implementálás 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énnyel rendelkezhet, és implementálható, hogy ne okozzon boxolást.

❌ NE bővítse ValueTypeki explicit módon. 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.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published 22, 2008 by Addison-Wesley Professional, a Microsoft Windows Development Series részeként.

Lásd még