Bagikan melalui


Desain Struct

Catatan

Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.

Jenis nilai tujuan umum paling sering disebut sebagai struct, kata kunci C#. Bagian ini memberikan panduan untuk desain penataan umum.

❌ JANGAN menyediakan konstruktor tanpa parameter untuk struct.

Mengikuti pedoman ini mengizinkan pembuatan array dari structs tanpa harus menjalankan konstruktor pada setiap item array. Perhatikan bahwa C# tidak mengizinkan structs memiliki konstruktor tanpa parameter.

❌ JANGAN tentukan jenis nilai yang dapat diubah.

Jenis nilai yang dapat diubah memiliki beberapa masalah. Misalnya, ketika pengambil properti mengembalikan jenis nilai, pemanggil menerima salinan. Karena salinan dibuat secara implisit, pengembang mungkin tidak menyadari bahwa itu memutasi salinan, dan bukan nilai aslinya. Juga, beberapa bahasa (bahasa dinamis, khususnya) memiliki masalah menggunakan jenis nilai yang dapat berubah karena bahkan variabel lokal, ketika direferensikan, menyebabkan salinan dibuat.

✔️ PASTIKAN bahwa status tempat semua data instans diatur ke nol, false, atau null (sebagaimana mestinya) valid.

Ini mencegah pembuatan instans yang tidak valid secara tidak sengaja saat array struct dibuat.

✔️ TERAPKAN IEquatable<T> pada jenis nilai.

Metode Object.Equals pada jenis nilai menyebabkan boxing, dan implementasi defaultnya tidak terlalu efisien, karena menggunakan pantulan. Equals dapat memiliki performa yang jauh lebih baik dan dapat diimplementasikan sehingga tidak akan menyebabkan boxing.

❌ JANGAN secara eksplisit memperpanjangValueType. Bahkan, sebagian besar bahasa mencegah hal ini.

Secara umum, struktur bisa sangat berguna tetapi hanya boleh digunakan untuk nilai-nilai kecil, tunggal, tidak berubah yang tidak akan sering dikotak-kotakkan.

Portions © 2005, 2009 Microsoft Corporation. Semua hak dilindungi undang-undang.

Dicetak ulang dengan izin dari Pearson Education, Inc. dari Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.

Lihat juga