Struktur dalam C#adalah jenis nilai, yang bermaksud bahawa mereka akan disalin apabila mereka ditugaskan. Ini akan membawa cabaran apabila memproses struktur pembolehubah.
Struktur pembolehubah membolehkan mengubah suai datanya selepas penciptaan. Walau bagaimanapun, kerana ia disalin dengan nilai, mengubah suai salinan tidak akan menjejaskan struktur asal atau salinan lain yang sedia ada. Tingkah laku ini boleh membawa kepada hasil yang tidak dijangka, terutamanya dalam persekitaran yang pelbagai.Sebagai contoh, katakan anda mempunyai struktur pembolehubah yang menunjukkan koordinat:
jika anda memberikan pemboleh ubah kepada struktur ini dan cuba mengubah suai atributnya:
public struct Coordinate { public int X; public int Y; }
Perubahan hanya mempengaruhi salinan tempatan yang disimpan dalam pemboleh ubah koordinat, bukan struktur asal atau rujukan lain kepadanya. Ini dengan mudah boleh membawa kepada data yang tidak konsisten dan menghasilkan tingkah laku yang tidak dapat diramalkan dalam aplikasi multi -threaded.
Oleh itu, secara amnya disyorkan untuk mengelakkan menggunakan struktur pembolehubah. Sebaliknya, pilih struktur yang tidak dapat, di mana data tidak dapat diubah suai selepas penciptaan. Ini memastikan tingkah laku yang boleh diramal dan menghapuskan potensi kerosakan data yang tidak disengajakan dalam senario jenis jenis.Coordinate coordinate = new Coordinate { X = 0, Y = 0 }; coordinate.X = 1;
Atas ialah kandungan terperinci Kenapa struktur mutable dianggap 'jahat' dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!